php多维关联数组中的键搜索

php多维关联数组中的键搜索,php,multidimensional-array,Php,Multidimensional Array,如何检查上述php数组中存在的zindex键。您有一个为此调用的方法。当然,如果您不知道具有该值的数组的深度,则需要执行一些(递归)循环。也许您应该以这种方式使用函数 $array = array( 'the-1'=> array('name'=>'lorem','pos'=>array('top'=>'90','left'=>'80'),'zindex'=>2), 'the-2'=> array('name'=>'ipsum','

如何检查上述php数组中存在的
zindex
键。

您有一个为此调用的方法。当然,如果您不知道具有该值的数组的深度,则需要执行一些(递归)循环。

也许您应该以这种方式使用函数

$array = array(
    'the-1'=> array('name'=>'lorem','pos'=>array('top'=>'90','left'=>'80'),'zindex'=>2),
    'the-2'=> array('name'=>'ipsum','pos'=>array('top'=>'190','left'=>'180'),'zindex'=>1),
    'the-3'=> array('name'=>'lorem ipsum','pos'=>array('top'=>'20','left'=>'30'),'zindex'=>3)
);


这只是一个取自php.net的打印示例,但是您可以很容易地对其进行调整以满足您的需要(例如,在回调函数中添加)

我不完全确定您在这里想要什么,因此这里有一些可以在zindex上运行的测试。这些都使用循环和

如果要检查外部数组中的每个项目是否有zindex:

这将遍历每个元素,并简单地检查该元素是否具有某种zindex键

<?php
$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');

function test_print($item, $key)
{
    echo "$key holds $item\n";
}

array_walk_recursive($fruits, 'test_print');
?>
foreach($key=>$element的数组){
if(数组键存在('zindex',$element)){
echo“Key'$Key'的zindex为“$element['zindex']”。\n
\n; }否则{ echo“失败!!键“$Key”没有zindex!\n
\n”; } }
如果您只是在寻找任何zindex键:

这将循环执行,直到找到具有zindex的元素。如果找到zindex,则函数返回true,否则返回false

foreach( $array as $key => $element ) {
    if( array_key_exists('zindex',$element) ) {
        echo "Key '$key' has a zindex of ".$element['zindex']."\n<br>\n";
    } else {
        echo "Fail!! Key '$key' has no zindex!\n<br>\n";
    }
}
函数find\u zindex($array){
foreach($key=>$element的数组){
if(数组键存在('zindex',$element)){
echo“Key'$Key'的zindex为“$element['zindex']”。\n
\n; 返回true; } } 返回false; } if(find_zindex($array)){ echo“发现一个zindex\n
\n”; }否则{ echo“失败:未找到zindex\n
\n”; }
如果要在数组中查找特定的zindex值:

这将循环查找具有特定值的特定zindex。如果找到,则返回外部数组的键。否则返回null

function find_zindex( $array ) {
    foreach( $array as $key => $element ) {
        if( array_key_exists('zindex',$element) ) {
            echo "Key '$key' has a zindex of ".$element['zindex']."\n<br>\n";
            return true;
        }
    }
    return false;
}

if( find_zindex( $array ) ) {
    echo "A zindex was found\n<br>\n";
} else {
    echo "Fail: no zindex was found\n<br>\n";
}
函数find\u zindex($array,$search\u key){
foreach($key=>$element的数组){
如果(数组_键_存在('zindex',$element)&&$element['zindex']==$search_键){
echo“Key'$Key'的zindex为“$element['zindex']”。\n
\n; 返回$key; } } 返回null; } $key=find_zindex($array,3); 如果($key){ echo“在“$key”找到了zindex\n
\n”; }否则{ echo“失败:找不到zindex\n
\n”; } $key=find_zindex($array,4); 如果($key){ echo“在“$key”找到了zindex\n
\n”; }否则{ echo“失败:找不到zindex\n
\n”; }
如果您想要包含每个具有特定zindex的键的数组:

这将循环执行,构建一个数组,其中包含与提供的zindex搜索值匹配的每个元素。完成后,它返回新的元素数组。如果未找到任何内容,它将返回一个空数组,该数组将被测试为false

function find_zindex( $array, $search_key ) {
    foreach( $array as $key => $element ) {
        if( array_key_exists('zindex',$element) && $element['zindex']==$search_key ) {
            echo "Key '$key' has a zindex of ".$element['zindex']."\n<br>\n";
            return $key;
        }
    }
    return null;
}

$key = find_zindex( $array, 3 );
if( $key ) {
    echo "The zindex was found at '$key'\n<br>\n";
} else {
    echo "Fail: the zindex was not found\n<br>\n";
}

$key = find_zindex( $array, 4 );
if( $key ) {
    echo "The zindex was found at '$key'\n<br>\n";
} else {
    echo "Fail: the zindex was not found\n<br>\n";
}
函数find\u zindex($array,$search\u key){
$result=array();
foreach($key=>$element的数组){
如果(数组_键_存在('zindex',$element)&&$element['zindex']==$search_键){
echo“Key'$Key'的zindex为“$element['zindex']”。\n
\n; $result[]=$key; } } 返回$result; } $key=find_zindex($array,3); 如果($key){ echo“zindex被发现在:”; 打印(钥匙); 回显“\n
\n”; }否则{ echo“失败:找不到zindex\n
\n”; } $key=find_zindex($array,4); 如果($key){ echo“zindex被发现在:”; 打印(钥匙); 回显“\n
\n”; }否则{ echo“失败:找不到zindex\n
\n”; }
如果您经常试图通过zindex查找数据,则需要重新设计阵列:

这将创建第二个数组,该数组只引用第一个数组中的元素。如果运行此操作,您可以看到数据是共享的,因为一个赋值将在两个数组中将“name”设置为“new_name”。请注意,外部数组的每个元素现在都有一个索引和一个zindex

这假设$array中的每个元素都有一个zindex,并且zindex的值是唯一的。如果某些元素没有zindex或具有重复的zindex,则需要对其进行一些修改

function find_zindex( $array, $search_key ) {
    $result = array();
    foreach( $array as $key => $element ) {
        if( array_key_exists('zindex',$element) && $element['zindex']==$search_key ) {
            echo "Key '$key' has a zindex of ".$element['zindex']."\n<br>\n";
            $result[] = $key;
        }
    }
    return $result;
}

$key = find_zindex( $array, 3 );
if( $key ) {
    echo 'The zindex was found at:';
    print_r( $key );
    echo "\n<br>\n";
} else {
    echo "Fail: the zindex was not found\n<br>\n";
}

$key = find_zindex( $array, 4 );
if( $key ) {
    echo 'The zindex was found at:';
    print_r( $key );
    echo "\n<br>\n";
} else {
    echo "Fail: the zindex was not found\n<br>\n";
}
$array=array(
'the-1'=>array('name'=>'lorem','pos'=>array('top'=>'90','left'=>'80'),'index'=>'the-1','zindex'=>2),
'the-2'=>数组('name'=>'ipsum','pos'=>数组('top'=>'190','left'=>'180'),'index'=>'the-2','zindex'=>1),
'the-3'=>数组('name'=>'lorem ipsum','pos'=>数组('top'=>'20','left'=>'30'),'index'=>'the-3','zindex'=>3)
);
$zarray=array();
foreach($array as&$value){
$zarray[$value['zindex']]=&value;
}
//可选:在zarray中按项的键排序
克索尔特($zarray)
打印(数组);
回显“\n
\n”; 印刷费($zarray); 回声“\n
\n
\n
\n
\n
\n
\n”; $array['the-1']['name']='new_name'; 打印(数组); 回显“\n
\n”; 印刷费($zarray);
“如何检查上述php数组中是否存在zindex键”-仅在任何位置/至少检查一次,还是要检查$array的每个元素是否为a)数组和b)是否具有索引/键
zindex
$array = array(
    'the-1'=> array('name'=>'lorem','pos'=>array('top'=>'90','left'=>'80'),'index'=>'the-1','zindex'=>2),
    'the-2'=> array('name'=>'ipsum','pos'=>array('top'=>'190','left'=>'180'),'index'=>'the-2','zindex'=>1),
    'the-3'=> array('name'=>'lorem ipsum','pos'=>array('top'=>'20','left'=>'30'),'index'=>'the-3','zindex'=>3)
);

$zarray = array();
foreach( $array as &$value ) {
    $zarray[$value['zindex']] =& $value;
}
// optional: order the entries in zarray by their key
ksort($zarray)

print_r($array);
echo "\n<br>\n";
print_r($zarray);
echo "\n<br>\n<br>\n<br>\n<br>\n<br>\n";

$array['the-1']['name']='new_name';
print_r($array);
echo "\n<br>\n";
print_r($zarray);