如何将PHP数组转换为多维关联数组

时间:2018-04-25 09:48:04

标签: php arrays multidimensional-array associative-array

我有一个如下所示的数组:

Array (
[0]=> 467:tv:59.99  
[1]=> 387:radio:8.99 
[2]=> 098:toaster:6.99
[3]=> 732:laptop:109.99)

我想创建一个关联数组(为每个值添加一个键)。每个值都用冒号分隔。例如,在索引0处,键和值对将是:

[0] =>
    id => 467
    product => tv
    price => 59.99

我正在考虑使用for循环遍历数组并将每个索引拆分为冒号所在的较小块。另外,我会在这里使用list()函数吗?

我有点坚持如何开始这个过程,所以任何提示和建议都会受到赞赏。

2 个答案:

答案 0 :(得分:1)

<?php

$arr = [
    '467:tv:59.99',
    '387:radio:8.99',
    '098:toaster:6.99',
    '732:laptop:109.99',
];

// for each element in $arr, run the function
$result = array_map(function($str) {
    // separate $str to [id, product, price]
    $values = explode(':', $str);

    // map $values to an associative array
    $entity = array_combine(['id', 'product', 'price'], $values);
    return $entity;
}, $arr);

var_dump($result);

答案 1 :(得分:0)

让我们假设您的数组如下所示:

$array = array(
[0]=> 467:tv:59.99  
[1]=> 387:radio:8.99 
[2]=> 098:toaster:6.99
[3]=> 732:laptop:109.99
);

使用foreach(),您可以遍历数组,使用explode()可以将字符串拆分为数组,由分隔符字符串分隔(此处为:

$new_array = array();

foreach($array as $key => $value) {
  $new_array[$key] = explode(":", $value);
}