我有一个数组,我们称之为$ mainArray,它看起来像这样: -
Array
(
[1] => Array
(
)
[5] => Array
(
[0] => 10
[1] => 15
[2] => 20
[3] => 25
)
[80] => Array
(
[0] => 20
[1] => 40
[2] => 50
[3] => 60
)
[777] => Array
(
[0] => 100
[1] => 200
[2] => 300
[3] => 400
)
[666] => Array
(
[0] => 1234
[1] => 5678
[2] => 20
[3] => 9865
)
[555] => Array
(
[0] => 111
[1] => 222
[2] => 333
[3] => 444
)
)
我想要做的是创建2个新数组: -
1)其中value等于$ mainArray的键名,但只有那些子数组(如果有的话)在其中某处包含值“20”的那些值。例如,我的新数组(称为$ arrayOne)将为[0] => 5,[1] => 80,[2] => 666。
2)与上面类似,但是没有子阵列,或者如果有,则不包括“20”作为值。所以(称之为$ arrayTwo)将是[0] => 1,[1] => 777,[2] => 555。
我已经尝试了每个循环的负载甚至一点RecursiveIteratorIterator(无论是什么!)但似乎无法以我需要的方式引用键和值。任何帮助将不胜感激!
答案 0 :(得分:0)
这会吗?:
<?php
foreach( $mainArray as $mKey => &$mVal )
{
if( in_array( 20, $mVal ) )
{
$arrayOne[] = $mKey;
}
else
{
$arrayTwo[] = $mKey;
}
}
答案 1 :(得分:0)
我相信你可以创建一个函数来检查数组是否包含20作为它的值。我们称这个函数为has20
。
您的两个新数组将是array_filter($mainArray, 'has20')
和array_filter($mainArray, function ($x) {return !has20($x);})
答案 2 :(得分:0)
你可以这样做:
$newArray = array();
foreach($mainArray as $key => $subArray) {
if (in_array(20, $subArray)) {
$newArray[] = $key;
}
}