Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 每4个实例分解一个字符串并创建一个新数组_Php_Arrays_Explode - Fatal编程技术网

Php 每4个实例分解一个字符串并创建一个新数组

Php 每4个实例分解一个字符串并创建一个新数组,php,arrays,explode,Php,Arrays,Explode,我有一根这样的绳子 $string = "title1|1.99|www.website.com|www.website.com/img1.jpg|title2|5.99|www.website2.com|www.website2.com/img2.jpg|title3|1.99|www.website3.com|www.website3.com/img3.jpg|"; 我希望将字符串分解为一个数组,但每4个管道实例创建一个新数组。也将是很好的名称以及下面的钥匙 例如: 等等 我如何才能做到这

我有一根这样的绳子

$string = "title1|1.99|www.website.com|www.website.com/img1.jpg|title2|5.99|www.website2.com|www.website2.com/img2.jpg|title3|1.99|www.website3.com|www.website3.com/img3.jpg|";
我希望将字符串分解为一个数组,但每4个管道实例创建一个新数组。也将是很好的名称以及下面的钥匙

例如:

等等

我如何才能做到这一点?

您正在寻找数组块:

您正在查找数组\u块:


以下是一种功能性方法:

Array
(
    [0] => Array
        (
            [title] => title1
            [price] => 1.99
            [url] => www.website.com
            [gallery] => www.website.com/img1.jpg
        )

    [1] => Array
        (
            [title] => title2
            [price] => 5.99
            [url] => www.website2.com
            [gallery] => www.website2.com/img2.jpg
        )

    [2] => Array
        (
            [title] => title3
            [price] => 1.99
            [url] => www.website3.com
            [gallery] => www.website3.com/img3.jpg
        )

)
输出:


注意:我从字符串中删除了尾随的|。您需要这样做,否则explode将返回一个额外的空白字符串。

这里有一个函数方法:

Array
(
    [0] => Array
        (
            [title] => title1
            [price] => 1.99
            [url] => www.website.com
            [gallery] => www.website.com/img1.jpg
        )

    [1] => Array
        (
            [title] => title2
            [price] => 5.99
            [url] => www.website2.com
            [gallery] => www.website2.com/img2.jpg
        )

    [2] => Array
        (
            [title] => title3
            [price] => 1.99
            [url] => www.website3.com
            [gallery] => www.website3.com/img3.jpg
        )

)
输出:

注意:我从字符串中删除了尾随的|。您需要这样做,否则explode将返回一个额外的空白字符串

$string = "title1|1.99|www.website.com|www.website.com/img1.jpg|title2|5.99|www.website2.com|www.website2.com/img2.jpg|title3|1.99|www.website3.com|www.website3.com/img3.jpg";

$array = array_map(function($array) {
    return array(
        'title' => $array[0],
        'price' => $array[1],
        'url' => $array[2],
        'gallery' => $array[3]
    );
}, array_chunk(explode('|', $string), 4));

print_r($array);
Array
(
    [0] => Array
        (
            [title] => title1
            [price] => 1.99
            [url] => www.website.com
            [gallery] => www.website.com/img1.jpg
        )

    [1] => Array
        (
            [title] => title2
            [price] => 5.99
            [url] => www.website2.com
            [gallery] => www.website2.com/img2.jpg
        )

    [2] => Array
        (
            [title] => title3
            [price] => 1.99
            [url] => www.website3.com
            [gallery] => www.website3.com/img3.jpg
        )

)