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

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

PHP:不在 foreach 內(nèi)循環(huán)

PHP:不在 foreach 內(nèi)循環(huán)

PHP
慕村9548890 2023-07-15 17:43:43
我有這個數(shù)組:$flavours = array (    0 => array(799390 => 'Banana',),    1 => array(799391 => 'Chocolate',));現(xiàn)在我在 foreach 中循環(huán)數(shù)據(jù)庫中的一組。我從數(shù)據(jù)庫中獲取“Banana”,我需要數(shù)組來給我799390。我努力了:??array_search('Banana', $flavours); 但它不起作用,除非我添加:??array_search('Banana', $flavours[0]); 但我無法添加,[0]因為我無法判斷“香蕉”口味在數(shù)組中的哪個位置。除了在 foreach 內(nèi)再次循環(huán)之外還有什么解決方案嗎?
查看完整描述

3 回答

?
四季花海

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

首先,我們可以使用array_walk_recursive()扁平化數(shù)組,這只會消除嵌套數(shù)組。


接下來,我們用于array_flip()交換展平數(shù)組中的鍵/值。這樣可以更輕松地獲取特定術(shù)語的 ID。


<?php


$flavours = [

    [799390 => 'Banana'],

    [799391 => 'Chocolate']

];


//flatten array

//Produces: Array ( [799390] => Banana [799391] => Chocolate )

array_walk_recursive($flavours,

    function($v, $k) use (&$temp) { 

        $temp[$k] = $v; 

    }

);


//flip array. Swaps keys with values.

//Produces: Array ( [Banana] => 799390 [Chocolate] => 799391 )

$flavours = array_flip($temp);

現(xiàn)在你可以很容易地獲得ID,例如$flavours['Banana']。


如果您有一個非常大的數(shù)組,此方法可能會變得很慢。然而,我在廉價的網(wǎng)絡(luò)主機上用 100,000 個值對此進行了測試,并運行了該方法幾次(20-25 次)。它始終以大約(通常低于)0.1 毫秒(即大約 0.0014 秒)完成。


查看完整回答
反對 回復(fù) 2023-07-15
?
浮云間

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

您可以插入一條if語句來設(shè)置循環(huán)條件:


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

  if($key =  array_search('Banana', $value)){

   echo $key; 

 }

}

輸出


799390


查看完整回答
反對 回復(fù) 2023-07-15
?
楊__羊羊

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

如果正在搜索的單詞大小寫不同,則在嘗試查找匹配項時,許多常用的數(shù)組方法將不起作用,但是使用“preg_grep然而”將允許以不區(qū)分大小寫的方式查找匹配項。


function findflavour( $search, $haystack ){

    foreach( $haystack as $index => $arr ){

        $res=preg_grep( sprintf( '@%s@i', $search ), $arr );

        if( !empty( $res ) ) return array_search( array_values( $res )[0], $arr );

    }

    return false;

}




$search='BaNanA';

$flavours=array(

    array( 799390 => 'Banana' ),

    array( 799391 => 'Chocolate' ),

    array( 729361 => 'Chilli' ),

    array( 879695 => 'Apple' ),

    array( 995323 => 'Avacado' ),

    array( 528362 => 'Orange' ),

    array( 723371 => 'Cherry' ),

);



printf( 'Key:%s', findflavour( $search, $flavours ) );

如果源數(shù)組中可能存在多個具有相同值但 ID 不同的元素,則該findflavour函數(shù)的版本略有不同


function findflavour( $search, $haystack, $multiple=false ){

    $keys=[];

    foreach( $haystack as $index => $arr ){

        $res=preg_grep( sprintf( '@%s@i', $search ), $arr );

        if( !empty( $res ) ) {

            $key=array_search( array_values( $res )[0], $arr );

            if( $multiple )$keys[]=$key;

            else return $key;

        }

    }

    return $multiple ? $keys : false;

}



$multiple=true;

$search='AVacAdo';

$flavours=array(

    array( 799390 => 'Banana' ),

    array( 799391 => 'Chocolate' ),

    array( 291333 => 'Avacado' ),

    array( 729361 => 'Chilli' ),

    array( 879695 => 'Apple' ),

    array( 995323 => 'Avacado' ),

    array( 528362 => 'Orange' ),

    array( 723371 => 'Cherry' ),

);



printf( 'Key(s): %s', print_r( findflavour( $search, $flavours, $multiple ), true ) );


查看完整回答
反對 回復(fù) 2023-07-15
  • 3 回答
  • 0 關(guān)注
  • 200 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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