【问题标题】:Place values from multidimensional array into a new array将多维数组中的值放入新数组中
【发布时间】:2017-09-14 18:17:01
【问题描述】:

我的任务是按字母顺序排列我在 Drupal 站点上使用 php for 循环输出的一些值 ($highschool)。我的理解是,我需要将这些值放入一个新数组中,以便在这种情况下对它们进行正确排序。

<select id="high_school" name="high_school_name" required="">
    <option value="">High School*</option>

    <?php 
        $highschool_info = field_get_items('node', $node, 'field_high_school_info');
        for ($i = 0; $i < count($highschool_info); $i++) {
        $value = field_view_value('node', $node, 'field_high_school_info', $highschool_info[$i]);
        $field_collection = $value['entity']['field_collection_item'][key($value['entity']['field_collection_item'])];
        $highschool = render($field_collection['field_high_school']['#items'][0]['value']);
    ?>

    <option value="<?php print render ($highschool); ?>"><?php print render ($highschool);?></option>
    <?php } ?>
</select>

我的想法是我能够实现将所有 $highschool 实例放入一个数组 ($highschool_array) 的目标,但我认为会发生的情况是 $highschool 的每个新实例都会覆盖前一个实例,这样数组只包含 $highschool 的最终实例。

        $value = field_view_value('node', $node, 'field_high_school_info', $highschool_info[$i]);
        $field_collection = $value['entity']['field_collection_item'][key($value['entity']['field_collection_item'])];
        $highschool = render($field_collection['field_high_school']['#items'][0]['value']);

        $highschool_array= array();

        $highschool_array[] = $highschool;

完成我所追求的最简单的方法是什么?澄清一下——假设从我上面的循环中输出 $highschool 变量的四个选项值:First Highschool、Second Highschool、Third Highschool 和 Fourth Highschool。如何将所有这些值放入 $highschool_array 中,以便最终对它们进行排序,使它们按以下顺序运行:First Highschool、Fourth Highschool、Second Highschool、Third Highschool。

另外,这就是 $highschool_info 打印时的样子。

Array
(
[0] = Array
    (
        [value] = 2718
        [revision_id] = 189531
    )

[1] = Array
    (
        [value] = 2719
        [revision_id] = 189532
    )

[2] = Array
    (
        [value] = 2720
        [revision_id] = 189821
    )

)

【问题讨论】:

  • 输入内容和预期输出内容?
  • 所以你想$highschool 将值作为数组的键?

标签: php arrays loops multidimensional-array


【解决方案1】:
$highschool_array = array_multisort($highschool_info, SORT_ASC, SORT_STRING);

array_multisort() 看起来是您最好的选择。查看 PHP 文档中的示例 2 和 3。

【讨论】:

  • 这为我生成了一个空数组。
  • 您可以print_r($highschool); 并将结果添加到您的问题中吗?
  • 澄清一下,$highschool 不是一个数组,它是 $highschool info 中的值之一,它是一个数组。我会将该信息添加到我的问题中。
  • 哦,我的错。你问题的第一行让我这么想。答案已编辑。
  • 没问题,抱歉我不够清楚。不幸的是,这也不是解决方案——在对高中值进行排序之前,我首先需要收集所有这些值并将它们放入自己的数组中,因为目前它们仅通过多维数组循环输出。再次抱歉,如果这听起来令人困惑,但我正在尽我所能理解问题(为了记录,打印你的最后一个答案输出“1”)。
猜你喜欢
  • 1970-01-01
  • 2021-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 2016-05-14
  • 2013-05-17
  • 1970-01-01
相关资源
最近更新 更多