【问题标题】:PHP push associative array in normal arrayPHP在普通数组中推送关联数组
【发布时间】:2016-10-12 11:56:00
【问题描述】:

我必须将关联数组推送到普通数组中(不要转换)。
示例(无代码):

project = {}
element["title"] = "My title"
element["description"] = "My description"

有没有办法实现这个

echo $project->title;
//or
echo $project[0]["title"]

? 我试过了,但是服务器说:ERROR 500

    $i = 0;
    $projects = {};
    foreach($projectsElements as $element) {
        while($i <= $nRowsForProject) {
            $idSection = $element->idSection;
            if($idSection == 1) $elements["".$element->internalDescription.""] = $element->text;
            else if($idSection == 2) $elements["".$element->internalDescription.""] = $element->text;
            else if($idSection == 3) $elements["".$element->internalDescription.""] = $element->text;
            $i++;
        }
        array_push($projects,$elements);
        $i=0;
    }

【问题讨论】:

  • $projects []= $element;?
  • 你把事情搞糊涂了:对象与数组不同。 -&gt; 运算符引用对象内部的属性,但以声明方式不可能。您也无法通过简单的$projects = {}; 创建对象,这是一个语法错误(您的错误 500)。相反,您通常必须实现一个类,然后您可以实例化一个对象。

标签: php arrays multidimensional-array associative-array


【解决方案1】:

$projects = {}; 不是有效的 php。

如果你想初始化一个空数组(关联或数字,没关系),你需要:

$projects = [];

或在旧的 php 版本上:

$projects = array();

还请注意,您需要在每次迭代开始时对 $elements 数组执行相同操作,否则每次迭代都会增长。假设描述不完全一样……

foreach($projectsElements as $element) {
    $elements = [];
    while($i <= $nRowsForProject) {
        ...

而且您的 while 循环似乎没有多大意义:您没有在循环中使用 $i 变量,因此只是在每次迭代中执行相同的分配。

【讨论】:

    【解决方案2】:
    $projects = []; // declare empty array
    foreach($projectsElements as $element) {
      $projects []= $element; // push $element into $projects array
    }
    

    【讨论】:

      【解决方案3】:
      $i = 0;
      $projects = array();
      foreach($projectsElements as $element) {
          while($i <= $nRowsForProject) {
          $elements = array();
              $idSection = $element->idSection;
              if($idSection == 1) $elements["".$element->internalDescription.""] = $element->text;
              else if($idSection == 2) $elements["".$element->internalDescription.""] = $element->text;
              else if($idSection == 3) $elements["".$element->internalDescription.""] = $element->text;
              $i++;
          }
          array_push($projects,$elements);
          $i=0;
      }
      

      【讨论】:

        猜你喜欢
        • 2015-06-08
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        • 1970-01-01
        • 1970-01-01
        • 2017-01-10
        • 2016-07-03
        相关资源
        最近更新 更多