比较关联数组中foreach循环内的下一个元素
Comparing Next element inside foreach loop in associate array
我正在尝试访问 php 中关联数组的下一个键值对,以检查下一个键值对是否相同。
foreach($array as $key => $value){
$b = $value['date'];
$c = ($key+1)['date']; // As ($key+1) is integer value not an array
if($b == $c){
statement
}
}
但是,这种方法是在下面抛出,这似乎是合乎逻辑的。
ErrorException: Trying to access array offset on value of type int
有什么方法可以在关联数组的 foreach
循环中找到下一个元素。
array (
0 =>
array (
'date' => "2019-03-31",
'a' => '1',
'b' => '1',
),
1 =>
array (
'date' => "2019-04-02",
'a' => '1',
'b' => '1',
),
2 =>
array (
'date' => "2019-04-02",
'a' => '2',
'b' => '1',
)
)
我不知道你从哪里得到 $date
你需要 'date'
,而且你没有在 $c
作业中的任何地方使用 $array
。它可以缩短,但使用您的代码,只需检查 next
元素:
foreach($array as $value) {
$b = $value['date'];
$c = next($array)['date'] ?? false;
if($b == $c) {
echo 'Yes';
}
}
如果它们是顺序整数键,那么您可以按照自己的方式进行,只需检查 $key+1
是否已设置:
foreach($array as $key => $value) {
$b = $value['date'];
$c = $array[$key+1]['date'] ?? false;
if($b == $c) {
echo 'Yes';
}
}
我正在尝试访问 php 中关联数组的下一个键值对,以检查下一个键值对是否相同。
foreach($array as $key => $value){
$b = $value['date'];
$c = ($key+1)['date']; // As ($key+1) is integer value not an array
if($b == $c){
statement
}
}
但是,这种方法是在下面抛出,这似乎是合乎逻辑的。
ErrorException: Trying to access array offset on value of type int
有什么方法可以在关联数组的 foreach
循环中找到下一个元素。
array (
0 =>
array (
'date' => "2019-03-31",
'a' => '1',
'b' => '1',
),
1 =>
array (
'date' => "2019-04-02",
'a' => '1',
'b' => '1',
),
2 =>
array (
'date' => "2019-04-02",
'a' => '2',
'b' => '1',
)
)
我不知道你从哪里得到 $date
你需要 'date'
,而且你没有在 $c
作业中的任何地方使用 $array
。它可以缩短,但使用您的代码,只需检查 next
元素:
foreach($array as $value) {
$b = $value['date'];
$c = next($array)['date'] ?? false;
if($b == $c) {
echo 'Yes';
}
}
如果它们是顺序整数键,那么您可以按照自己的方式进行,只需检查 $key+1
是否已设置:
foreach($array as $key => $value) {
$b = $value['date'];
$c = $array[$key+1]['date'] ?? false;
if($b == $c) {
echo 'Yes';
}
}