遍历多个数组并从每个数组中提取数据

时间:2019-08-10 06:21:14

标签: php arrays wordpress

我有一个数组,其中包含多个数组(目前为3个)。 每个数组内部都有多个posts对象。

我试图遍历这3个数组,每次尝试从其中的一个中拉出1个发布对象,并将其推入一个我创建的新的空数组,其顺序与在将其后拉一个数组相同其他。

// dynamic number
$count_posts_query = 9

//the array that contains 3 arrays with posts in it (dynamic can be more
)
$term_posts = array(
[0] => array( <--- contains 26 posts objects 
   [0] => {post object}.
   [1] => {post object},
   [2] => {post object},
   [... and so on 26 objects] 
 ) 
[1] => array( <--- contains 58 posts objects 
   [0] => {post object}.
   [1] => {post object},
   [2] => {post object},
   [... and so on 58 objects] 
 )
[2] => array( <--- contains 103 posts objects 
   [0] => {post object}.
   [1] => {post object},
   [2] => {post object},
   [... and so on 103 objects] 
 )
),

for ( $i = 0; $i < $count_posts_query; $i ++ ) {
 array_push( $new_terms_arrays, $term_posts[$i][ $i ] );
}

此循环的问题是$ i不正确,它只运行了3次,每次输入数组和具有相同$ i号的对象的位置,然后其他6个对象为空且不升序正确

错误图片- https://i.ibb.co/4PxXxgw/Screenshot-at-Aug-10-09-15-20.png

2 个答案:

答案 0 :(得分:1)

如果要遍历数组中的3个项目,则可以使用$term_posts数组本身的计数,而不是硬编码的$count_posts_query = 9

for ($i = 0; $i < count($term_posts); $i ++) {
 array_push($new_terms_arrays, $term_posts[$i][$i]);
}

Nigel Ren指出,请注意,两个索引都使用$i的值。对于第一个有效的方法,它基于$term_posts数组的计数。

出现问题是,您对第二个数组使用相同的递增索引,但不能保证该索引在那里。

如果您想每次提取1个发布对象,则必须确保使用现有索引。

答案 1 :(得分:1)

如果您知道该数组将始终是您所需要的项目数的正确长度,则可以使用array_column()从每个数组中提取下一组帖子并将其添加到新数组中(使用array_merge())。因此,这会从数组中提取所有[0]个项目,然后再提取[1]个项目,依此类推...

$i=0;
$new_terms_arrays = [];
while ( count($new_terms_arrays) < $count_posts_query ) {
    $new_terms_arrays = array_merge( $new_terms_arrays, 
            array_column($term_posts, $i++ ));
}