多数组PHP

时间:2019-01-19 11:22:33

标签: php arrays

我有这些数组

$array_sku = {
[0]=> 'first'
[1]=> 'second'
[2]=> 'third'
}
$array_Title = {
[0]=> 'firstTitle'
[1]=> 'secondTitle'
[2]=> 'thirdTitle'
}
$array_Description= {
[0]=> 'firstDescription'
[1]=> 'secondDescription'
[2]=> 'thirdDescription'
}

我在php中有一个程序,可以将这些信息保存在csv文件中,如下所示:

| SKU  |     |   TITLE   |    |   DESCRIPTION    |
| first|     | firstTitle|    | firstDescription |
|second|     |secondTitle|    | secondDescription|
| third|     | thirdTitle|    | thirdDescription |

但是现在我创建了一个新数组,具有新的后缀(-大字母)

$array_sku_new = {
[0]=> 'first-A'
[1]=> 'first-B'
[2]=> 'second-VG'
[3]=> 'second-RT'
[4]=> 'second-C'
[5]=> 'third'
}

我想通过以下方式将这些信息保存在csv中:

| SKU     |     |   TITLE   |    |   DESCRIPTION    |
| first-A |     | firstTitle|    | firstDescription |
| first-B |     | firstTitle|    | firstDescription |
|second-VG|     |secondTitle|    | secondDescription|
|second-RT|     |secondTitle|    | secondDescription|
|second-C |     |secondTitle|    | secondDescription|
| third   |     | thirdTitle|    | thirdDescription |

有人知道我该怎么做吗?

这是我的代码:

for($i=0;$i<count($array_sku_new );$i++){
    $prod = array(
        'SKU' => $array_sku_new [$i],
        'TITLE' => $array_Title [$i],
        'DESCRIPTION' => $array_Description [$i],   
            );  
        $prods[] = $prod;   
} 

它不会很好用,因为所有新的skus都没有其他信息。

1 个答案:

答案 0 :(得分:0)

使用示例数据来执行此操作的一种方法是使用连字符,并结合使用array_count_valuesarray_values来重置密钥。

稍后,您可以索引到该数组中以获得循环次数。要获得$array_sku_new$array_Title$array_Description的正确索引,可以使用for循环中的计数器和单独的计数器来获取$array_sku_new的正确索引。

例如:

$totals = array_values(array_count_values(array_map(function ($x) {
    return explode('-', $x)[0];
}, $array_sku_new)));


$counter = 0;
for ($j = 0; $j < count($totals); $j++) {
    for ($i = 0; $i < $totals[$j]; $i++) {
        $prod = array(
            'SKU' => $array_sku_new [$counter],
            'TITLE' => $array_Title [$j],
            'DESCRIPTION' => $array_Description [$j],
        );
        $prods[] = $prod;
        $counter ++;
    }
}

Php demo