我正在使用从我的数据库中检索的一些数据。它被放入一个二维*数组中,并根据数据库中数据的ID手动设置索引。
* 这不仅仅是二维的,但我只需要处理它的2个维度。
这是有问题的数组:
Array
(
[error] => Boolean(false)
[results] => Array
(
[1] => Array
(
[0] => title1
[4] => title2
)
[3] => Array
(
[0] => title3
[1] => title4
[2] => title5
)
[4] => Array
(
[0] => title6
[1] => title7
[3] => title8
)
)
)
在这个数组中,我只需要使用它的“结果”部分,从而使问题数组二维。
我的脚本中发生了一些巫术魔法,我被告知第一个数组的索引和第二个数组的索引,然后我从第二个数组中提取值。
假设我想获得值“title5”。我的脚本会告诉我我需要使用索引3然后索引2.
我已经完成了所有这些,但这是我坚持的下一部分任务,并且不知道如何尝试。
检索“title5”之后,我想检索下一个和上一个项目的索引,所以在这种情况下“title4”和“title6”。如果没有先前的值(比如我们最初提取“title1”),那么我需要一些方法来识别它,就像使用假布尔值一样。同样,如果没有“下一个”值也是如此。
通过检索索引我的意思是,例如:title4 = 3 & 1
和title6 = 4 & 0
有没有人有任何想法我应该怎么做呢?我不是在寻找有人为我做这项工作,但我会非常感激。与此同时,我将继续进行实验。谢谢!
注意:
title1
,title2
等。所以我不能只减少一个数字并进行搜索。答案 0 :(得分:1)
我编辑了@Jonathan Rich的答案,以获得我的实际解决方案。其中$firstIndex
和$secondIndex
是我已经知道的两个索引。
//my already known indexes
$firstIndex = 3;
$secondIndex = 2;
//
$prevIndex1 = null;
$prevIndex2 = null;
$last_was_value = false;
$nextIndex1 = null;
$nextIndex2 = null;
foreach ( $articles['results'] as $index => $value ) {
foreach ( $articles['results'][$index] as $index2 => $value2 ) {
if ( ($index == $firstIndex) && ($index2 == $secondIndex) ) {
$last_was_value = true;
} else if ($last_was_value == true) {
$nextIndex1 = $index;
$nextIndex2 = $index2;
break 2;
} else if ($last_was_value == false) {
$prevIndex1 = $index;
$prevIndex2 = $index2;
}
}
}
echo "<br />PREV: $prevIndex1 & $prevIndex2<br />";
echo "NEXT: $nextIndex1 & $nextIndex2<br />";
答案 1 :(得分:0)
当然,这是一个低级别的解决方案:
$prev = null;
$last_was_value = false;
$next = null;
foreach ( $foo['results'][$index1] as $index => $value ) {
if($value == $some_result_value) {
$last_was_value = true;
} elseif($last_was_value == true && $next == null) {
$next = $index;
} elseif($last_was_value == false) {
$prev = $index;
}
}
所以最后,如果prev或next为null,那么你的索引分别是第一个/最后一个索引,如果不是,那么这些值就是兄弟索引。