在另一个数组中捕获数组
Catch the array inside another array
让我向您展示我正在尝试做的事情的示例。我明白了:
$array = [
[
'first_name' => 'John',
'last_name' => 'Doe',
],
[
'first_name' => 'Johny',
'last_name' => 'Dow',
],
[
'first_name' => 'Johnys',
'last_name' => 'Doesnot',
],
[
'first_name' => 'Joe',
'last_name' => 'Dow',
],
[
'first_name' => 'Joes',
'last_name' => 'Down',
],
];
我想捕获 'last_name' => 'Dow'
所在的最后一个数组,并更改此数组(first_name
和 last_name
)的所有数据,并可能添加 age
.
我认为 array_filter()
在这种情况下会有所帮助,但我不确定如何处理它。
谁能指导我如何实现这一目标。
谢谢!
因为要捕获最后一项,所以可以从数组末尾开始迭代,然后在捕获到第一项满足条件后打破循环:
for ($i = count($array) - 1; $i >= 0; $i--) {
if ($array[$i]["last_name"] == "Dow") {
$array[$i]["first_name"] = "New First Name";
$array[$i]["last_name"] = "New Last Name";
$array[$i]["age"] = 111;
break;
}
}
或者,您可以使用 array_reverse 遍历数组。将标志设置为 true 将保留键,允许我们通过其索引访问相应的项目。
foreach (array_reverse($array, true) as $index => $person) {
if ($person['last_name'] == 'Dow') {
// $array[$index]['first_name'] = 'some name';
// $array[$index]['last_name'] = 'some name';
$array[$index]['age'] = 25;
break;
}
}
echo '<pre>';
print_r($array);
echo '</pre>';
输出:
Array
(
[0] => Array
(
[first_name] => John
[last_name] => Doe
)
[1] => Array
(
[first_name] => Johny
[last_name] => Dow
)
[2] => Array
(
[first_name] => Johnys
[last_name] => Doesnot
)
[3] => Array
(
[first_name] => Joe
[last_name] => Dow
[age] => 25
)
[4] => Array
(
[first_name] => Joes
[last_name] => Down
)
)
让我向您展示我正在尝试做的事情的示例。我明白了:
$array = [
[
'first_name' => 'John',
'last_name' => 'Doe',
],
[
'first_name' => 'Johny',
'last_name' => 'Dow',
],
[
'first_name' => 'Johnys',
'last_name' => 'Doesnot',
],
[
'first_name' => 'Joe',
'last_name' => 'Dow',
],
[
'first_name' => 'Joes',
'last_name' => 'Down',
],
];
我想捕获 'last_name' => 'Dow'
所在的最后一个数组,并更改此数组(first_name
和 last_name
)的所有数据,并可能添加 age
.
我认为 array_filter()
在这种情况下会有所帮助,但我不确定如何处理它。
谁能指导我如何实现这一目标。
谢谢!
因为要捕获最后一项,所以可以从数组末尾开始迭代,然后在捕获到第一项满足条件后打破循环:
for ($i = count($array) - 1; $i >= 0; $i--) {
if ($array[$i]["last_name"] == "Dow") {
$array[$i]["first_name"] = "New First Name";
$array[$i]["last_name"] = "New Last Name";
$array[$i]["age"] = 111;
break;
}
}
或者,您可以使用 array_reverse 遍历数组。将标志设置为 true 将保留键,允许我们通过其索引访问相应的项目。
foreach (array_reverse($array, true) as $index => $person) {
if ($person['last_name'] == 'Dow') {
// $array[$index]['first_name'] = 'some name';
// $array[$index]['last_name'] = 'some name';
$array[$index]['age'] = 25;
break;
}
}
echo '<pre>';
print_r($array);
echo '</pre>';
输出:
Array
(
[0] => Array
(
[first_name] => John
[last_name] => Doe
)
[1] => Array
(
[first_name] => Johny
[last_name] => Dow
)
[2] => Array
(
[first_name] => Johnys
[last_name] => Doesnot
)
[3] => Array
(
[first_name] => Joe
[last_name] => Dow
[age] => 25
)
[4] => Array
(
[first_name] => Joes
[last_name] => Down
)
)