【问题标题】:Foreach array organization/iterationForeach 数组组织/迭代
【发布时间】:2013-02-03 09:37:14
【问题描述】:

我有这个数组,我尝试过迭代并创建一个新数组:

array(233) {
  [0]=>
  array(2) {
    ["subject_id"]=>
    int(138)
    ["relatedsubject_id"]=>
    int(127)
  }
  [1]=>
  array(2) {
    ["subject_id"]=>
    int(138)
    ["relatedsubject_id"]=>
    int(47)
  }
  [2]=>
  array(2) {
    ["subject_id"]=>
    int(138)
    ["relatedsubject_id"]=>
    int(13)
  }
  [3]=>
  array(2) {
    ["subject_id"]=>
    int(138)
    ["relatedsubject_id"]=>
    int(56)
  }
  [4]=>
  array(2) {
    ["subject_id"]=>
    int(154)
    ["relatedsubject_id"]=>
    int(77)
  }
  [5]=>
  array(2) {
    ["subject_id"]=>
    int(154)
    ["relatedsubject_id"]=>
    int(69)
  }
  [6]=>
  array(2) {
    ["subject_id"]=>
    int(154)
    ["relatedsubject_id"]=>
    int(70)
  }
  [7]=>
  array(2) {
    ["subject_id"]=>
    int(154)
    ["relatedsubject_id"]=>
    int(75)

我把它剪短了,所以它不会太令人讨厌。这是我现在使用的代码:

    $subject_id = array();
    foreach ($results as $mainKey => $subArrays) {
        if(!isset($subject_id[$results[$mainKey]["subject_id"]])) {
            $subject_id[$results[$mainKey]["subject_id"]] = array();
            array_push($subject_id[$results[$mainKey]["subject_id"]], $results[$mainKey]["relatedsubject_id"]);
            // $subject_id[$results[$mainKey]["subject_id"]][] = $results[$mainKey]["relatedsubject_id"];
        }
    }

var_dump($subject_id);

我的结果如下所示:

array(111) {
  [138]=>
  array(1) {
    [0]=>
    int(127)
  }
  [154]=>
  array(1) {
    [0]=>
    int(77)
  }

关于为什么我只获得 1 个值以及如何修改以使每个“relatedsubject_id”符合相应的“subject_id”的任何想法?谢谢。

编辑

预期结果:

array {
      [138]=>
      array(1) {
        [0]=>
        int(127)
        [1]=>
        int(47)
        [2]=>
        int(13)
        [3]=>
        int(56)
      }
      [154]=>
      array(1) {
        [0]=>
        int(77)
        [1]=>
        int(69)
        [2]=>
        int(70)
        [3]=>
        int(75)
      }

【问题讨论】:

  • 您能发布您希望阵列的外观吗?

标签: php for-loop multidimensional-array foreach iteration


【解决方案1】:

您似乎正在尝试合并您的主题 ID 和相关主题 ID。如果是这样的话,这可能对你有用。

    $subject_id = array();
    foreach ($results as $mainKey => $subArrays) {
      if(!isset($subject_id[$results[$mainKey]['subject_id']])) {
        $subject_id[$results[$mainKey]['subject_id']] = array('subject_id' => $results[$mainKey]['subject_id'], 'relatedsubject_id' => array());
      }
      $subject_id[$results[$mainKey]['subject_id']]['relatedsubject_id'][] = $results[$mainKey]["relatedsubject_id"];
    }

更改为您的编辑

$subject_id = array();
foreach ($results as $mainKey => $subArrays) {
  if(!isset($subject_id[$results[$mainKey]['subject_id']])) {
    $subject_id[$results[$mainKey]['subject_id']] = array();
  } 
  $subject_id[$results[$mainKey]['subject_id']][] = $results[$mainKey]["relatedsubject_id"];
}

您只得到一个结果的原因是您的所有代码都在 if(!isset()) 函数中。那不应该只设置一次。如果这有意义的话。

【讨论】:

  • 啊,我现在明白了。非常感谢。
猜你喜欢
  • 2011-11-27
  • 1970-01-01
  • 2013-01-15
  • 2013-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-29
  • 1970-01-01
相关资源
最近更新 更多