PHP如何过滤多维数组
PHP how to filter multidimentional array
我有一个要验证的多维数组
$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 但没有成功
只需使用 foreach 循环。
The foreach construct provides an easy way to iterate over arrays.
foreach works only on arrays and objects, and will issue an error when
you try to use it on a variable with a different data type or an
uninitialized variable.
There are two syntaxes:
foreach (array_expression as $value)
foreach (array_expression as $key => $value)
The first form loops over the array given by array_expression. On each iteration, the value of the current element
is assigned to $value and the internal array pointer is advanced by
one (so on the next iteration, you'll be looking at the next element).
The second form will additionally assign the current element's key to
the $key variable on each iteration.
示例:
<?php
$new = [];
foreach ($old as $k => $v) {
if ($v['age'] == '##') {
$new[] = $v;
unset($old[$k]);
}
}
使用 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);
这行得通。
$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);
}
我有一个要验证的多维数组
$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 但没有成功
只需使用 foreach 循环。
The foreach construct provides an easy way to iterate over arrays. foreach works only on arrays and objects, and will issue an error when you try to use it on a variable with a different data type or an uninitialized variable.
There are two syntaxes:
foreach (array_expression as $value)
foreach (array_expression as $key => $value)
The first form loops over the array given by array_expression. On each iteration, the value of the current element is assigned to $value and the internal array pointer is advanced by one (so on the next iteration, you'll be looking at the next element).
The second form will additionally assign the current element's key to the $key variable on each iteration.
示例:
<?php
$new = [];
foreach ($old as $k => $v) {
if ($v['age'] == '##') {
$new[] = $v;
unset($old[$k]);
}
}
使用 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);
这行得通。
$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);
}