我有一个多维数组,例如:
$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
那样只得到true
或false
,但你也会在搜索块中得到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
中的值。