此问题已在此处有答案:
PHP multidimensional array search by value(23答案)
5天前关闭.
$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)
);
如何检查zindex
键是否存在于上述php数组中。
4条答案
按热度按时间5ssjco0h1#
你有一个方法叫array_key_exists。当然,如果你不知道数组的深度,你需要做一些(递归)循环。
eoigrqb62#
也许你应该这样使用array_walk_recursive函数
这只是从www.example.com上获取的一个打印示例php.net,但您可以轻松地调整它以满足您的需要(例如,在回调函数中添加array_key_exist)
mkshixfv3#
我不太清楚你想要什么,这里有很多可以在zindex上运行的测试,它们都使用foreach循环和array_key_exists。
如果你想检查外层数组中的每一项,看看它是否有zindex:
这将遍历每个元素,并简单地检查该元素是否具有某种zindex键。
如果你只是在寻找任何zindex键:
这个函数循环直到找到一个有zindex的元素。如果找到zindex,函数返回true,否则返回false。
如果您正在数组中查找特定的zindex值:
这个循环遍历,查找具有特定值的特定zindex。如果找到,则返回外部数组的键。否则返回null。
如果你想要一个包含每个键的数组,并且每个键都有一个特定的zindex:
这将循环,构建一个数组,其中包含与提供的zindex搜索值匹配的每个元素。完成后,它将返回新的元素数组。如果没有找到任何东西,它将返回一个空数组,该数组将被测试为false。
如果您经常尝试通过zindex查找数据,您将需要重新设计您的数组:
这创建了第二个数组,它只引用了第一个数组中的元素。如果你运行这个,你可以看到数据是共享的,因为一个赋值会在两个数组中将'name'设置为'new_name'。注意,外部数组的每个元素现在都有一个索引和一个zindex。
这里假设$array中的每个元素都有一个zindex,并且zindex的值是唯一的。如果有些元素没有zindex或者有重复的zindex,那么你需要修改一下。
pkbketx94#
我的解决方案是:
在这种情况下,它返回它找到的第一个值(在您的情况下,当搜索
"zindex"
时,它将返回2
),如果您需要在数组中返回所有值,您可以使用此函数:返回
[2,1,3]