第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何將數(shù)據(jù)庫(kù)中的信息添加到現(xiàn)有的對(duì)象數(shù)組中?

如何將數(shù)據(jù)庫(kù)中的信息添加到現(xiàn)有的對(duì)象數(shù)組中?

PHP
紫衣仙女 2022-10-22 16:43:45
我有一個(gè)以下格式的數(shù)組;// echo '<pre>' . var_export($this->viewableFields, true) . '</pre>';array (  0 =>   (object) array(     'formId' => '4',     'userId' => '7'  ),  1 =>   (object) array(     'formId' => '4',     'userId' => '4'  )) 我需要修改數(shù)據(jù)并向該數(shù)組添加另一個(gè)鍵/值。我需要使用userId數(shù)組中的值,查詢(xún) MySQL 數(shù)據(jù)庫(kù)并返回值。我需要為每個(gè)數(shù)組元素執(zhí)行此操作。因此,對(duì)于每個(gè)數(shù)組元素,我想運(yùn)行一個(gè)查詢(xún),例如;SELECT group from users WHERE userId = [userId in array]然后我想將此值添加到數(shù)組中,最終數(shù)組應(yīng)如下所示;array (  0 =>   (object) array(     'formId' => '4',     'userId' => '7',     'group' => 'Registered'  ),  1 =>   (object) array(     'formId' => '4',     'userId' => '4',     'group' => 'Admin'  )) 我知道我可以通過(guò)使用向數(shù)組元素添加一個(gè)附加值array_walk,就像這樣;array_walk($this->viewableFields, function(&$arr) {    $arr->group = 'Registered';});我不確定如何從數(shù)據(jù)庫(kù)中檢索值并插入到現(xiàn)有數(shù)組中。我怎樣才能做到這一點(diǎn)?
查看完整描述

3 回答

?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊

對(duì)每條記錄進(jìn)行一次額外查詢(xún)是一個(gè)非常糟糕的主意,并且是N+1 問(wèn)題的一個(gè)明顯示例:您需要獲取實(shí)體的“N”個(gè)子實(shí)體,并且最初只獲取父實(shí)體。


如果您的初始查詢(xún)有 100 個(gè)用戶,那么您將完成 101 個(gè)查詢(xún)。如果您以后需要一些其他不相關(guān)的領(lǐng)域,這將開(kāi)始迅速失控。


這對(duì)性能非常不利,并且隨著您的應(yīng)用程序變得越來(lái)越復(fù)雜,它很容易對(duì)其產(chǎn)生非常嚴(yán)重的影響。


假設(shè)您無(wú)法修改初始查詢(xún)并進(jìn)行簡(jiǎn)單JOIN查詢(xún)以獲取所需數(shù)據(jù),最好簡(jiǎn)單地進(jìn)行兩次查詢(xún)并拼接結(jié)果數(shù)據(jù)。即使您可以修改原始查詢(xún),這最終可能會(huì)表現(xiàn)得更好。


如何去做:

假設(shè)您的初始對(duì)象數(shù)組具有 aformId和userId公共屬性,首先獲取您感興趣的所有用戶 ID:


$index = [];

$ids = array_reduce($array, function($ids, $object) use (&$index) {

    $ids[]                  = $object->userId;

    $index[$object->userId] = $object;


    return $ids;

});


$ids_for_sql = '(' . implode(', ', $ids) . ')';

您還正在構(gòu)建一個(gè)“索引”( $index),以便能夠直接訪問(wèn)數(shù)組中的對(duì)象,而無(wú)需再次對(duì)其進(jìn)行迭代。


現(xiàn)在您可以進(jìn)行第二個(gè)查詢(xún)來(lái)獲取您的“組”屬性:


$groups_query = "SELECT userId, group from users WHERE userId IN $ids_for_sql";

現(xiàn)在只需“拼接”來(lái)自?xún)蓚€(gè)查詢(xún)的數(shù)據(jù)即可:


foreach ($conn->query($groups_query) as $row) {

    $index[$row['userId']]->group = $row['group'];

}

有了這個(gè),現(xiàn)在您的原始$array包含“用戶”對(duì)象將被正確更新,并且只進(jìn)行 2 次查詢(xún)而不是 11 次。這可以更好地執(zhí)行和擴(kuò)展,并且不會(huì)增加顯著的復(fù)雜性。


您可以在這里看到一個(gè)簡(jiǎn)單的、有效的演示(使用數(shù)組而不是 SQL 查詢(xún))。


查看完整回答
反對(duì) 回復(fù) 2022-10-22
?
莫回?zé)o

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

首先,我們將從對(duì)象數(shù)組中獲取 userID 的值,然后在數(shù)據(jù)庫(kù)中查詢(xún)它,假設(shè)數(shù)組為 $arr。


foreach($arr AS $key=>$item) 

{

    $userid=$item["userId"];  // getting userId from object

    $query= $con->query("SELECT group from users WHERE userId='$userid'");

    if($query->num_rows>0)  //checking if query has some result

    {

        $row=$result->fetch_assoc();      //fetching the result

        $arr[$key]->group=$row['group'];  // lastly attaching group key to the arr.

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-10-22
?
躍然一笑

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊

您必須查找項(xiàng)目,從數(shù)組項(xiàng)目中獲取 ID,然后使用 SQL 選擇數(shù)據(jù)。


嘗試:


foreach($array as $key=>$item) {

    $sql = "SELECT group from users WHERE userId = ".$item["userId"];

    $result = $conn->query($sql);

    if ($result->num_rows > 0) {

        $db_data = $result->fetch_assoc();

        //do stuff with db data


        $array[$key]["group"] = $group; //insert group to this variable

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-10-22
  • 3 回答
  • 0 關(guān)注
  • 200 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)