我有一个数组,其中包含多个数组(目前为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
答案 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++ ));
}