PHP在多维数组中搜索子值的父关键字



我有一个多维数组,例如:

$array[ 'ex1' ] = array( 'link', '915', '716' );
$array[ 'am2' ] = array( 'image', '37', '685' );
$array[ 'ple' ] = array( 'video', '354', '675' );

如果我打$array[$ID][0],我会得到link,太好了!

如果我搜索link,我需要获得父密钥,在这种情况下是ex1

这是我目前的解决方案:

foreach( $array as $key => $value ) { 
if( in_array( 'link', $value ) ) { $ID = $key; }
}

有没有更好的方法来设置数组或搜索父关键字?

编辑

如果我以这种方式更改数组格式:

$array[] = array( 'ex1', 'link', '915', '716' );
$array[] = array( 'am2', 'image', '37', '685' );
$array[] = array( 'ple', 'video', '354', '675' );

我想用array_search( 'link', array_column( $array, 1, 0 ))更容易获得$ID但是我不能读书!例如:echo( $array[$ID][0] ) // should output link

哪个是更好的解决方案?

你可以像这个一样使用array_search

foreach($array as $k => $v) {
    $ind = array_search("link",$array[$k])
    if ($ind) { $ID = $k; break; } 
}

当你离开这个循环时,你可以用$array[$ID][$ind]检索"链接"。

与这里的方法不同的是,你不会像in_array那样只得到truefalse,但你也会在搜索块中得到array_search的"链接"索引。

当然,当你搜索一个不存在的密钥时,这并不能解决你的问题。举个例子,

$array[] = array( 'ex1', 'link', '915', '716' );
$array[] = array( 'am2', 'image', '37', '685' );
$array[] = array( 'ple', 'video', '354', '675' );

如果使用此方法搜索"alpha",则会出现错误。安全的解决方案就像

$ID = false
foreach($array as $k => $v) {
    $ind = array_search($needle,$array[$k])
    if ($ind) { $ID = $k; break; } 
}
if ($ID) {
    $element = $array[$ID][$ind]
} else {
    // The item searched for does NOT exist
}

我认为,这将以您想要的方式在干草堆$array中搜索$needle中的值。

相关内容

  • 没有找到相关文章

最新更新