Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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数组转换为关联数组_Php - Fatal编程技术网

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

如何将PHP数组转换为关联数组,php,Php,我想根据数组值转换此数组 在下划线值转换为键之前,“\”值转换为值之后 原始数组 Array ( [0] => 1_1 [1] => 1_2 [2] => 1_3 [3] => 1_4 [4] => 1_5 [5] => 1_6 [6] => 3_1 [7] => 3_2 [8] => 3_4 [9] => 3_5 [10] => 4_1 [11] =>

我想根据数组值转换此数组

在下划线值转换为键之前,“\”值转换为值之后

原始数组

Array ( 
  [0] => 1_1 
  [1] => 1_2 
  [2] => 1_3 
  [3] => 1_4 
  [4] => 1_5 
  [5] => 1_6 
  [6] => 3_1 
  [7] => 3_2 
  [8] => 3_4 
  [9] => 3_5 
  [10] => 4_1 
  [11] => 4_2 
  [12] => 4_3 
) 
我想将其转换为:

Array(
  [1]=> array(
    [0]=>1,
    [1]=>2,
    [2]=>3,
    [3]=>4,
    [4]=>5,
    [5]=>6
  ),
  [3]=> array(
    [0]=>1,
    [1]=>2,
    [2]=>4,
    [3]=>5,
    [4]=>5
  ),
  [4]=> array(
    [0]=>1,
    [1]=>2,
    [2]=>3
  )
);
这应该起作用:

$resp = [];
foreach ($arr as $a) {
    $values = explode('_', $a);

    $resp[$values[0]][] = $values[1]; 
}
反过来说:

$resp = [];
foreach ($resp as $key => $arr) {
    foreach ($arr as $a) {
        $resp[] = $key . '_' . $a;
    }
}

这应该可以做到:

$array = Array (
  0  => "1_1",
  1  => "1_2",
  2  => "1_3",
  3  => "1_4",
  4  => "1_5",
  5  => "1_6",
  6  => "3_1",
  7  => "3_2",
  8  => "3_4",
  9  => "3_5",
  10 => "4_1",
  11 => "4_2",
  12 => "4_3"
);

// Create a new empty array
$result = array();

// Loop throught your first array
foreach ($array as $data) {

    // Foreach data, you explode by '_'so you will get an array
    // Eg. $new_data = array(0 => '1', 1 => '1') for $data = "1_1"
    $new_data = explode('_', $data);

    // Now you just have to add the data as you want
    $result[$new_data[0]][] = $new_data[1];
}

var_dump($result);
输出为:

array (size=3)
1 => 
array (size=6)
  0 => string '1' (length=1)
  1 => string '2' (length=1)
  2 => string '3' (length=1)
  3 => string '4' (length=1)
  4 => string '5' (length=1)
  5 => string '6' (length=1)
3 => 
array (size=4)
  0 => string '1' (length=1)
  1 => string '2' (length=1)
  2 => string '4' (length=1)
  3 => string '5' (length=1)
4 => 
array (size=3)
  0 => string '1' (length=1)
  1 => string '2' (length=1)
  2 => string '3' (length=1)

你的代码在哪里?发布它…嗨!Stackoverflow是一个特定的问题解决社区,而不是免费的编码服务。请告诉我们你做了什么,遇到了什么问题以及你的期望值。此外,这个问题已经回答了至少50次,所以更多的研究可能对你也有好处。结合
foreach
分解
,然后使用分解的项作为密钥对并将新分配到新容器中就足够了。我昨天看到了这个问题。我当时可能也说过同样的话。最好看看在不可用状态下创建此数组的代码并解决问题,谢谢它正在工作:)。还有一个问题是什么相反的过程是重新转换原始数组吗?Foreach+字符串连接?循环遍历数组
Foreach($key=>$data)
然后循环遍历每个$data
Foreach($index=>$value)
,您将得到每个带有
$old\u value=$key的“old”值。“\uu”。$value;