首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP -通过嵌套数组创建一个新数组,同时创建一个post/映像关系

PHP -通过嵌套数组创建一个新数组,同时创建一个post/映像关系
EN

Stack Overflow用户
提问于 2018-11-02 11:41:54
回答 2查看 81关注 0票数 1
  • PHP 7.2
  • Wordpress 4.9.8
  • 高级定制字段5.7.7

我感兴趣的是创建一个数组,其中每个项目都包含:

  • 柱id
  • 职位名称
  • 属于post的图像数组

我正在使用一个ACF中继器的每一个帖子,持有许多图像,中继器的名称是carousel

WP post对象与ACF字段之间没有联系。

这一问题:

嵌套foreach将所有图像推入第一篇文章中。

预期:

嵌套的foreach将只使用属于该post ID的图像填充$randomArray

代码语言:javascript
复制
$workshop_posts_args = array(
    'post_type' => 'workshops'
);

$randomArray = [
    'post_id' => '',
    'post_title' => '',
    'post_image_url' => []
];
$post_query = new WP_Query($workshop_posts_args);
if ($post_query->have_posts()) {
    while ($post_query->have_posts()) {
        $post_query->the_post();
        $carousel_array = get_field('carousel', get_the_ID());
        echo "<h2>".get_the_title()."</h2>";
        if ($carousel_array) {
            foreach ($carousel_array as $carousel_images) {
                foreach ($carousel_images as $image) {
                    $randomArray['post_id'] = get_the_ID();
                    $randomArray['post_title'] = get_the_title();
                    $randomArray['post_image_url'][] = $image['url'];
                    echo 'image_url:'.$image['url'].'<br>The array: <pre>'.print_r($randomArray, true).'</pre>';
                    ?>
                    <?php
                }
            }
        }
    }
}
?>
<h1>TOTAL ARRAY</h1>
<pre><?php print_r($randomArray) ?></pre>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-02 11:54:45

您在循环中一次又一次地重写数组索引,这就是您的问题。

也是:-

代码语言:javascript
复制
$randomArray = []; //before post_query

并将if块更改如下:

代码语言:javascript
复制
if ($post_query->have_posts()) {
    while ($post_query->have_posts()) {
        $post_query->the_post();
        $id = get_the_ID();
        $randomArray[$id]['post_id'] = $id;
        $randomArray[$id]['post_title'] = get_the_title();
        $carousel_array = get_field('carousel', $id);
        if ($carousel_array) {
            foreach ($carousel_array as $carousel_images) {
                foreach ($carousel_images as $image) {
                    $randomArray[$id]['post_image_url'][] = $image['url'];
                    ?>
                    <?php
                }
            }
        }
    }
}

注意:- rest代码将相同

以上代码将为您提供基于post-id的多维数组。如果你希望索引是0,1,2,3.然后做:-

代码语言:javascript
复制
$randomArray = array_values($randomArray);
票数 1
EN

Stack Overflow用户

发布于 2018-11-02 11:53:47

使用适当的$randomArray索引如下:

代码语言:javascript
复制
<?php
  $workshop_posts_args = array(
  'post_type' => 'workshops'
);

$randomArray = array();
$post_query = new WP_Query($workshop_posts_args);
$index = 0;
if ($post_query->have_posts()) {
    while ($post_query->have_posts()) {
        $post_query->the_post();
        $randomArray[$index]['post_id'] = get_the_ID();
        $randomArray[$index]['post_title'] = get_the_title();
        $carousel_array = get_field('carousel', get_the_ID());
       //echo "<h2>".get_the_title()."</h2>";
       if ($carousel_array) {
        foreach ($carousel_array as $carousel_images) {
            foreach ($carousel_images as $image) {

                $randomArray[$index]['post_image_url'][] = $image['url'];
                //echo 'image_url:'.$image['url'].'<br>The array: <pre>'.print_r($randomArray, true).'</pre>';
                ?>
                <?php
            }
        }
    }
    $index++;
}
}
?>
<h1>TOTAL ARRAY</h1>
<pre><?php print_r($randomArray) ?></pre>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53117947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档