【问题标题】:PHP Multidimensional arrays keys and valuesPHP 多维数组键和值
【发布时间】:2014-06-24 10:51:58
【问题描述】:

我真的很难理解 PHP 中的多维数组,我的背景是 C 和 Java,我对数组没有任何问题!

我正在尝试从 SQL 数据库中读取月份列表,每个月都有一个对应于某个值的值列表。

即。

  2014-01-01, ("Val1", "Val2", "Val3", "Val4", "Val5"), (3, 4, 7, 5, 3)
  2014-02-01, ("Val1", "Val2", "Val3", "Val4", "Val5"), (5, 3, 6, 2, 8)
  2014-03-01, ("Val1", "Val2", "Val3", "Val4", "Val5"), (6, 5, 4, 3, 2) ...

我可以读取这些值,我可以将它们拆分,但我希望能够将这些值添加到一个数组中,但将这些值放入正确的月份。

我 c/Java 我只是创建一个这样的数组;

[0,0,0,0,0,0,0,0,0,0,0,0]  - Val1 goes in here
[0,0,0,0,0,0,0,0,0,0,0,0]  - Val2 goes in here
[0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0]  - Val5 goes in here

然后当我解析这些值时,我会选择月份,并将读取的值添加到正确的月份中。

我可以在 PHP 中创建数组,我只需要知道,有没有一种我在咖啡/睡眠剥夺状态下错过的明显方式,我基本上可以说类似的话;

如果我想将第二个数组中的位置 11 更改为 6 在 C 中我会是这样的;

array[2][11] = 6

在 PHP 中是否有类似的功能?

【问题讨论】:

  • $array[2][11] = 6; 不适合你?
  • 在 PHP 中是完全一样的:$arr[2][11] = 6,假设你的数组是数字索引的。请展示您的完整代码,以便我们更好地理解
  • $array[2][11] = 6;应该工作
  • 你初始化你的数组了吗? PHP 无法猜测您正在使用嵌套数组。您需要在访问它们之前手动创建每个子数组。
  • 第二个数组不应该是$array[1][11]吗?

标签: php arrays multidimensional-array


【解决方案1】:

这可行:

$myArray[2][11] = 6;
$myArray[2][12] = 7;
var_dump( $myArray ); //view structure

【讨论】:

    【解决方案2】:

    数组访问的简单示例

    $data = [
        '2014-06-24' => ['Val1', 'Val2', 'Val3'],
        '2014-06-23' => ['Val1', 'Val2', 'Val3']
    ];
    

    在 PHP 中,您有不同的方式访问数组。数组中的内部迭代器以 0 开头。快速而肮脏的您可以执行以下操作。

    $data['2014-06-24'][0] = 'Val4';
    

    所以你的 $data 数组看起来像

    $data = [
        '2014-06-24' => ['Val4', 'Val2', 'Val3'],
        '2014-06-23' => ['Val1', 'Val2', 'Val3']
    ];
    

    以更加面向对象的方式,您可以使用 StandardPhpLibrary (SPL) 的 ArrayObject 类,它带来了许多用于处理数组的方法和对象(接口、迭代器等)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-25
      • 2011-09-20
      • 1970-01-01
      • 2019-10-16
      • 2021-11-28
      • 1970-01-01
      • 2016-02-09
      • 2013-07-02
      相关资源
      最近更新 更多