我有一个想要验证的多维数组
$new = [];
$old = [
[
'name'=>'ben',
'age'=>20,
],
[
'name'=>'ben',
'age'=>20,
],
[
'name'=>'ben',
'age'=>##,
],
]
我想将$ old数组中值等于“##”的任何子数组移动到$ new数组,因此结果如下:
$old = [
[
'name'=>'ben',
'age'=>20,
],
[
'name'=>'ben',
'age'=>20,
],
];
$new = [
[
'name'=>'ben',
'age'=>##,
],
]
我尝试过filter_arry和in_array但没有成功
答案 0 :(得分:2)
只需使用foreach循环。
foreach构造提供了一种迭代数组的简单方法。 foreach仅适用于数组和对象,并在发生时发出错误 您尝试在具有不同数据类型或变量的变量上使用它 未初始化的变量。
有两种语法:
foreach (array_expression as $value)
foreach (array_expression as $key => $value)
第一个表单循环遍历array_expression给出的数组。在每次迭代时,当前元素的值 被分配给$ value,内部数组指针被提前 一个(所以在下一次迭代中,你将看到下一个元素)。
第二种形式还会分配当前元素的键 每次迭代时的$ key变量。
示例:
<?php
$new = [];
foreach ($old as $k => $v) {
if ($v['age'] == '##') {
$new[] = $v;
unset($old[$k]);
}
}
答案 1 :(得分:0)
将PHP的array_filter函数与回调一起使用:
$new_arr = array_filter($old, function ($old) {
return ($old['age'] == '##');
});
$old_arr = array_filter($old, function ($old) {
return ($old['age'] != '##');
});
print_r($new_arr);
print_r($old_arr);
答案 2 :(得分:0)
这很有效。
$new[] = array();
$old = array(
array('name'=>'ben','age'=>'20'),
array('name'=>'ben','age'=>'40'),
array('name'=>'ben','age'=>'##')
);
foreach( $old as $array ){
//print_r( $array );
if( $array['age'] == "##" ){
$new[] = $array['name'];
$new[] = $array['age'];
unset($array['name']);
unset($array['age']);
}
//print_r( $array );
print_r( $new);
}