如何从aarry创建动态数组

时间:2019-01-28 19:31:05

标签: php arrays wordpress

我要创建一个这样的阵列:

$myData = array (
    'gallery' => array (
        0 => array (
            'title' => 'Bild 1',
            'image' => 'https://mysite.de/wp-content/uploads/2019/01/IMG_8797.jpg',
        ),
    ),
);

我正在将Wordpress与Wedevs WPUserFrontendPro Form一起使用。通过这种形式,我上传了画廊的图像。图像ID存储在自定义字段中。诸如2622、56565、44343、3434之类的东西。

现在,我尝试使用此字符串创建一个数组。

$bilderGalerie = explode( ',', $string );

我尝试过:

$myData = array (
    'gallery' =>
    for( $i = 0;$i < count( $bilderGalerie );$i ++ ) {
        array (
            $i => array (
                'title' => 'Bild 1 Nummer'.$bilderGalerie[$i],
                'image' =>  wp_get_attachment_image_src( $bilderGalerie[$i], 'thumbnail' )
            ),
        ),
    }
);

我得到这个:“语法错误,意外的'}'”

有什么建议吗? 非常感谢, 丹尼斯

2 个答案:

答案 0 :(得分:2)

您不能闯入和退出数组声明并执行其他代码。只需在循环内定义数组,请尝试foreach

foreach($bilderGalerie as $val) {
    $myData['gallery'][] = array(
        'title' => 'Bild 1 Nummer' . $val,
        'image' =>  wp_get_attachment_image_src($val, 'thumbnail'));
}

即使$myData已被定义为追加或创建并追加到gallery,此方法也能很好地工作。

答案 1 :(得分:2)

如上所述,您不能在数组声明中使用for循环。

或者,您可以将array_map的结果设置为您的值:

$myData = [
    "gallery" => array_map(function ($imgId) {
        return array(
            'title' => 'Bild 1 Nummer' . $imgId,
            'image' => wp_get_attachment_image_src($imgId, 'thumbnail')
        );
    }, $bilderGalerie)
];