string(5) "60,82" But the content required for data processing should be array(1){ {code...} } Please..."/> string(5) "60,82" But the content required for data processing should be array(1){ {code...} } Please...">

Home  >  Article  >  Backend Development  >  PHP array concatenation and reorganization

PHP array concatenation and reorganization

WBOY
WBOYOriginal
2016-08-23 09:17:463907browse

The current code is like this
array(6) {
[0] => string(5) "58,86"
[1] => string(5) "68,78"
[2] = > string(5) "65,78"
[3] => string(5) "60,82"

But the content required for data processing should be
array(1){

<code>[0] => 58,68,65,60
[1] => 86,78,78,82</code>

}

Please tell me how to process the data

After thinking about it, the idea is to traverse first, then split the values ​​and then splice them together. However, during the final assembly, there is an empty key. I don’t know where it comes from.
array(6) {
[0] => string(5 ) "58,86"
[1] => string(5) "68,78"
[2] => string(5) "65,78"
[3] => string(5) " 60,82"
[4] => string(3) "094"
[5] => string(2) "40"
}、

foreach($lsj['data'] as $key=>$val){

<code>    $a[''] = $a[$key] = explode(',',$val);
   }
   </code>
After

we get
array(7) {
[0] => array(2) {

<code>[0] => string(2) "58"
[1] => string(2) "86"</code>

}
[""] => array(1) {

<code>[0] => string(2) "40"</code>

}
[1] => array(2) {

<code>[0] => string(2) "68"
[1] => string(2) "78"</code>

}
[2] => array(2) {

<code>[0] => string(2) "65"
[1] => string(2) "78"</code>

}
[3] => array(2) {

<code>[0] => string(2) "60"
[1] => string(2) "82"</code>

}
[4] => array(1) {

<code>[0] => string(3) "094"</code>

}
[5] => array(1) {

<code>[0] => string(2) "40"</code>

}
}
Then assemble the same key into a new array. Because my PHP version is 5.4 and I cannot use array_column, I wrote a public method i_array_column()

$b['data1'] = i_array_column($a,'0');
$b['data2'] = i_array_column($a,'1');

Get 1 array
array(2) {
["data1"] => array(7) {

<code>[0] => string(2) "58"
[""] => string(2) "40"
[1] => string(2) "68"
[2] => string(2) "65"
[3] => string(2) "60"
[4] => string(3) "094"
[5] => string(2) "40"</code>

}
["data2"] => array(7) {

<code>[0] => string(2) "86"
[""] => NULL
[1] => string(2) "78"
[2] => string(2) "78"
[3] => string(2) "82"
[4] => NULL
[5] => NULL</code>

}
}
Because highcharts requires json format, convert it to json format
dump(json_encode($b));,
The result after accurate conversion is
string(146) "{"data1":{"0":"58" ,"":"40","1":"68","2":"65","3":"60","4":"094","5":"40"}," data2":{"0":"86","":null,"1":"78","2":"78","3":"82","4":null,"5" :null}}"

I just don’t know why there is an empty array

Reply content:

The current code is like this
array(6) {
[0] => string(5) "58,86"
[1] => string(5) "68,78"
[2] = > string(5) "65,78"
[3] => string(5) "60,82"

But the content required for data processing should be
array(1){

<code>[0] => 58,68,65,60
[1] => 86,78,78,82</code>

}

Please tell me how to process the data

After thinking about it, the idea is to traverse first, then split the values ​​and then splice them together. However, during the final assembly, there is an empty key. I don’t know where it comes from.
array(6) {
[0] => string(5 ) "58,86"
[1] => string(5) "68,78"
[2] => string(5) "65,78"
[3] => string(5) " 60,82"
[4] => string(3) "094"
[5] => string(2) "40"
}、

foreach($lsj['data'] as $key=>$val){

<code>    $a[''] = $a[$key] = explode(',',$val);
   }
   </code>
After

we get
array(7) {
[0] => array(2) {

<code>[0] => string(2) "58"
[1] => string(2) "86"</code>

}
[""] => array(1) {

<code>[0] => string(2) "40"</code>

}
[1] => array(2) {

<code>[0] => string(2) "68"
[1] => string(2) "78"</code>

}
[2] => array(2) {

<code>[0] => string(2) "65"
[1] => string(2) "78"</code>

}
[3] => array(2) {

<code>[0] => string(2) "60"
[1] => string(2) "82"</code>

}
[4] => array(1) {

<code>[0] => string(3) "094"</code>

}
[5] => array(1) {

<code>[0] => string(2) "40"</code>

}
}
Then assemble the same key into a new array. Because my PHP version is 5.4 and I cannot use array_column, I wrote a public method i_array_column()

$b['data1'] = i_array_column($a,'0');
$b['data2'] = i_array_column($a,'1');

Get 1 array
array(2) {
["data1"] => array(7) {

<code>[0] => string(2) "58"
[""] => string(2) "40"
[1] => string(2) "68"
[2] => string(2) "65"
[3] => string(2) "60"
[4] => string(3) "094"
[5] => string(2) "40"</code>

}
["data2"] => array(7) {

<code>[0] => string(2) "86"
[""] => NULL
[1] => string(2) "78"
[2] => string(2) "78"
[3] => string(2) "82"
[4] => NULL
[5] => NULL</code>

}
}
Because highcharts requires json format, convert it to json format
dump(json_encode($b));,
The result after accurate conversion is
string(146) "{"data1":{"0":"58" ,"":"40","1":"68","2":"65","3":"60","4":"094","5":"40"}," data2":{"0":"86","":null,"1":"78","2":"78","3":"82","4":null,"5" :null}}"

I just don’t know why there is an empty array

<code class="php"><?php 
$arr = ["58,86,1,18",
"68,78,2,17",
"65,78,3,17",
"60,82,4,19",
"4,5,6,18"];


array_walk($arr, function(&$item) {
    $item = explode(',', $item);
});

$new_arr = [];
$length = count($arr);
for ($i = 0; $i < $length; $i++) {
    $length1 = count($arr[$i]);
    for ($j = 0; $j < $length1; $j++) {
        $new_arr[$j][$i] = $arr[$i][$j];
    }
}

array_walk($new_arr, function(&$item) {
    $item = join(',', $item);
});

print_r($new_arr);</code>

Matrix transpose, the above method can be extended to multi-dimensional matrices

Write one that only handles your situation. After analysis, your situation is to split the strings in the array

<code>    $arr = array("58,86","68,78","65,78","60,82");
    foreach($arr as $key => $value){
        $tmp = explode(',',$value);
        $a[] = $tmp[0];
        $b[] = $tmp[1];
    }
    $c = array(
        implode(',',$a),implode(',',$b)
    );
    print_r($c);</code>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn