使用php在数组内的Foreach循环

时间:2015-10-02 10:47:16

标签: php arrays foreach

我创建了2个数组,我试图将我的第一个数组显示给另一个数组。所以我使用了foreach语句,所以我可以像我这样在第二个数组中显示每个值

<?php 
    $first = array('12:00 AM', '1:00 AM', '2:00 AM', '3:00 AM', '4:00 AM', '5:00 AM', '6:00 AM', '7:00 AM', '8:00 AM', '9:00 AM', '10:00 AM', '11:00 AM');

    $2nd = array('body' =>array(),);

    foreach($first as $value){
         $2nd['body'] = $value;
    }

   echo json_encode($2nd); ?>

问题只有11:AM正在显示。那么在我的代码中我的问题是什么呢?我真的需要你的帮助。我愿意听。感谢

4 个答案:

答案 0 :(得分:2)

首先:您无法使用数字(PHP Docs)启动变量名称,其次需要将值附加(added [])到数组,否则您将只获得最后一个值。

$first = array( '12:00 AM', '1:00 AM', '2:00 AM', '3:00 AM', '4:00 AM', '5:00 AM', '6:00 AM', '7:00 AM', '8:00 AM', '9:00 AM', '10:00 AM', '11:00 AM' );

$second= array( 'body' => array(), );

foreach ( $first as $value ) {
    $second['body'][] = $value;
}

echo json_encode($second);

您也可以使用更短的方式:

$first = array( '12:00 AM', '1:00 AM', '2:00 AM', '3:00 AM', '4:00 AM', '5:00 AM', '6:00 AM', '7:00 AM', '8:00 AM', '9:00 AM', '10:00 AM', '11:00 AM' );

$second = array( 'body' =>  $first );

echo json_encode( $second );

答案 1 :(得分:1)

您可以使用= php equal operator

$first = array( '12:00 AM', '1:00 AM', '2:00 AM', '3:00 AM', '4:00 AM', '5:00 AM', '6:00 AM', '7:00 AM', '8:00 AM', '9:00 AM', '10:00 AM', '11:00 AM' );

$second['body'] = $first;

print json_encode($second);

提示:变量名称不能以数字开头,因此将$2nd重命名为$second http://php.net/manual/en/language.variables.basics.php

此处工作示例https://eval.in/443545

答案 2 :(得分:0)

更改变量名称。 (即)不能以digit开头。 考虑将其用作$second

$first = array( '12:00 AM', '1:00 AM', '2:00 AM', '3:00 AM', '4:00 AM', '5:00 AM', '6:00 AM', '7:00 AM', '8:00 AM', '9:00 AM', '10:00 AM', '11:00 AM' );   

$second= array( 'body' => array(), );
foreach ( $first as $value ) 
    {
     $second['body'][] = $value;
    }
 echo json_encode($second);

答案 3 :(得分:0)

您不会将$first的值附加到$second['body'],而是覆盖它们。 使用array_push函数或$second['body'][] = $value; 编辑:是的,当然,尊重变量命名规则,如其他答案所述。