我有一个结构
的大型CATEGORIES数组[0] => WP_Term Object ( [term_id] => 1028
[name] => Sale woman
[slug] => sale-woman
[term_group] => 0
[term_taxonomy_id] => 1028)
[1] => WP_Term Object ( [term_id] => 1029
[name] => Sale man
[slug] => sale-man
[term_group] => 0
[term_taxonomy_id] => 1029)...
我不需要这么多的值,我只显示这个数组的一部分()。所以,我从这个数组创建自己的数组
$ids = array();
$i = 0;
foreach ( $cats as $key=>$cat ) {
$ids[$i]['id'] = $cat->term_id;
$ids[$i]['catname'] = $cat->name;
$i++;
}
效果很好并且还给我
Array ( [0] => Array ( [id] => 1028 [catname] => Sale woman )
[1] => Array ( [id] => 1029 [catname] => Sale man ) )...
我需要在此数组中找到当前类别并获取下一个类别的上一个类别。我试试
$thisindex = array_search( $this_category_id, $ids['id'] );
$previd = $ids[ $thisindex - 1 ];
$nextid = $ids[ $thisindex + 1 ];
但是当我尝试ECHO $ previd或$ nextid时它什么也没有返回。 $this_category_id
效果很好,我认为问题出在array_search( $this_category_id, $ids['id'] );
我也尝试$ ids [] [' id'] - 导致错误
$ ids [$ i] [' id'] - 没有任何回报
如何查找$previd
和$nextid
?需要帮助
答案 0 :(得分:0)
试试这个
$array = array_column($ids, 'id'); //array of ID
$thisindex = array_search( $this_category_id, $array );
或者自己在foreach中建立一个
$ids = array();
$array = array();
$i = 0;
foreach ( $cats as $key=>$cat ) {
$ids[$i]['id'] = $cat->term_id;
$ids[$i]['catname'] = $cat->name;
$array[$i] = $cat->term_id;
$i++;
}
或者您可以编写自己的搜索功能。
您的数组看起来像这样
[
0 => [ 'id' => 1, ..],
1 => [ 'id' => 2, ..],
]
但你的搜索就像这样
['id' => [....]]
除了顶部数组中没有id
,只有0
,1
等等。即使有,id
也不属于数组类型,但可能和Int。
<强> 更新 强>
要使数组循环,你必须检查你是否在开始之前和结束之后是这样的:
$previd = $ids[ $thisindex - 1 ];
$nextid = $ids[ $thisindex + 1 ];
$min = 0;
$max = count( $ids ) - 1;
if( $previd < $min ) $previd = $max;
if( $nextid > $max ) $nextid = $min;
如果它小于0那么它等于数组的计数 - 1(结束),如果它超过结束那么它等于开始或(0)在这种情况下。