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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

多維數(shù)組中的部分搜索不適用于深度元素

多維數(shù)組中的部分搜索不適用于深度元素

PHP
白衣非少年 2023-07-08 17:29:31
你好,我從 API 得到了這樣的結(jié)果:$data = ["1" => [    "book" => "Harry Potter",    "artist" => array("David", "Emma"),    "country" => [        ["description" => "Wander"],        ["description" => "Magic"]    ]],"2" => [    "book" => "Science book",    "artist" => array("Artist 1", "Melanie Hudson"),    "country" => [        ["description" => "Physics"],        ["description" => "Albert Einstein"]    ]],"3" => [    "book" => "Bible",    "artist" => array("Artist 1", "Pedro"),    "country" => [        ["description" => "Love"],        ["description" => "Respect"]    ]],];我正在做的是使用 PHP 在多維數(shù)組中部分搜索字符串值。當我搜索值(例如波特)時它正在工作book。但當涉及到artist和時country。我的代碼不再起作用了。搜索將返回所有匹配項。以下是我到目前為止所做的事情:function searchFor($haystack, $needle){$r = array();foreach($haystack as $key => $array) {$contains = false;foreach($array as $k => $value) {       if (!is_array($value)) {           if(stripos($value, $needle) !== false ) {              $contains = true;           }       }       else {           searchFor($array['country'],$needle);       }  }   if ($contains) {      array_push($r,$array);   }  }   return $r; }echo ("<pre>");print_r(searchFor($data,"Wander"));   <--- Not working. but when I change it to Potter it will work.echo ("</pre>");任何關于如何改進我的代碼的想法將不勝感激。注意:我試圖減少 PHP 中許多循環(huán)和內(nèi)置函數(shù)的使用。我只是想要一個簡單但有效的解決方案。希望有人能分享一些想法。謝謝
查看完整描述

2 回答

?
守著星空守著你

TA貢獻1799條經(jīng)驗 獲得超8個贊

您需要將遞歸調(diào)用的結(jié)果與searchFor您的 result 合并$r。在語句中嘗試以下else遞歸調(diào)用searchFor

else { 
   $r = array_merge($r, searchFor($array['country'],$needle));
}


查看完整回答
反對 回復 2023-07-08
?
largeQ

TA貢獻2039條經(jīng)驗 獲得超8個贊

以下邏輯可能會幫助您:


$result = []; // $result is container for matches - filled by reference

$needle = 'Wander'; // the value we are looking for

recurse($data, $needle, $result);


function recurse($haystack = [], $needle = '', &$result) {

    foreach($haystack as $key => $value) {

        if(is_array($value)) {

            recurse($value, $needle, $result);

        } else {

            if(strpos($value, $needle) !== false) {

                $result[] = $value; // store match

            }

        }

    }

}

工作演示


查看完整回答
反對 回復 2023-07-08
  • 2 回答
  • 0 關注
  • 197 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號