php多维关联数组中的键搜索
如何检查上述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','
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);