繁体   English   中英

数组推送PHP的麻烦

[英]trouble with array push php

我想让多个数组的多个值放入一个数组中,我创建了此代码,但不起作用,只是将最后一个值推入整个数组中,结果必须是

$ rest = Array([OPEN] => Array(),[HAPPY] => Array(),[ALIVE] => Array(),[GOOD] => Array())

<?
error_reporting(0);
 $arr=array(
    0 => array(
        'OPEN' => 'understanding',
        'HAPPY' => 'great',
        'ALIVE' => 'playful',
        'GOOD' => 'calm'
    ),
    1 => array(
        'OPEN' => 'confident',
        'HAPPY' => 'gay',
        'ALIVE' => 'courageous',
        'GOOD' => 'peaceful'
    ),
    2 => array(
        'OPEN' => 'reliable',
        'HAPPY' => 'joyous',
        'ALIVE' => 'energetic',
        'GOOD' => 'at ease'
    ));
$feeling = array();
$x=0;
foreach ($arr[0] as $key => $value) {
$rest = array_merge($feeling,array("$key" => array()));
}
//$rest=Array ( [OPEN] => Array ( ) ) Array ( [HAPPY] => Array ( ) ) Array ( [ALIVE] => Array ( ) ) Array ( [GOOD] => Array ( ) )

 for ($i=0; $i <count($arr) ; $i++) { 

foreach ($arr[$i] as $key => $value) {
    array_push($rest[$key], $arr[$i][$key]);
}

 }
 print_r($rest);


?> 

-----结果是什么给我----- Array([GOOD] => Array([0] =>平静[1] =>和平[2] =>放心)

    [OPEN] =>
    [HAPPY] =>
    [ALIVE] =>
)
----
i want is like that
----
Array
(
    [GOOD] => Array
        (
            [0] => calm
            [1] => peaceful
            [2] => at ease
        )

    [OPEN] =>Array
        (
            [0] => understanding
            [1] => confident
            [2] => reliable
        )
    [HAPPY] =>Array
        (
            [0] => great
            [1] => gay
            [2] => joyous
        )
    [ALIVE] =>Array
        (
            [0] => playful
            [1] => courageous
            [2] => energetic
        )
)

我相信这正在返回所需的输出?

$arr=array(
    0 => array(
        'OPEN' => 'understanding',
        'HAPPY' => 'great',
        'ALIVE' => 'playful',
        'GOOD' => 'calm'
    ),
    1 => array(
        'OPEN' => 'confident',
        'HAPPY' => 'gay',
        'ALIVE' => 'courageous',
        'GOOD' => 'peaceful'
    ),
    2 => array(
        'OPEN' => 'reliable',
        'HAPPY' => 'joyous',
        'ALIVE' => 'energetic',
        'GOOD' => 'at ease'
    )
);


$output=array();
$keys=array_keys( $arr[0] );

for( $i=0; $i < count( $arr ); $i++ ){
    foreach( $keys as $key )$output[$key][]=$arr[$i][$key];
}
echo '<pre>', print_r($output,true), '</pre>';

结果:

Array
(
    [OPEN] => Array
        (
            [0] => understanding
            [1] => confident
            [2] => reliable
        )

    [HAPPY] => Array
        (
            [0] => great
            [1] => gay
            [2] => joyous
        )

    [ALIVE] => Array
        (
            [0] => playful
            [1] => courageous
            [2] => energetic
        )

    [GOOD] => Array
        (
            [0] => calm
            [1] => peaceful
            [2] => at ease
        )

)

如果我不理解您的要求,那么此解决方案将为您服务。我使用array_column()方法,因为您当前的for()foreach()循环代码看起来有些混乱。

$arr=array(
    0 => array(
        'OPEN' => 'understanding',
        'HAPPY' => 'great',
        'ALIVE' => 'playful',
        'GOOD' => 'calm'
    ),
    1 => array(
        'OPEN' => 'confident',
        'HAPPY' => 'gay',
        'ALIVE' => 'courageous',
        'GOOD' => 'peaceful'
    ),
    2 => array(
        'OPEN' => 'reliable',
        'HAPPY' => 'joyous',
        'ALIVE' => 'energetic',
        'GOOD' => 'at ease'
    ));

$expected = [];
$keys = array_keys($arr[0]);
foreach($keys as $key){
   $expected[$key] = array_column($arr,$key);
}
print '<pre>';
print_r($expected);
print '</pre>';

输出:

数组

(
    [OPEN] => Array
        (
            [0] => understanding
            [1] => confident
            [2] => reliable
        )

    [HAPPY] => Array
        (
            [0] => great
            [1] => gay
            [2] => joyous
        )

    [ALIVE] => Array
        (
            [0] => playful
            [1] => courageous
            [2] => energetic
        )

    [GOOD] => Array
        (
            [0] => calm
            [1] => peaceful
            [2] => at ease
        )

)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM