【问题标题】:Transform Static Array into a generated by foreach loop将静态数组转换为由 foreach 循环生成的
【发布时间】:2017-03-17 16:42:02
【问题描述】:

我对这里的这个数组有点迷茫,如果可以的话,我需要一些“光”。

我的情况是:将一些静态数据从数组改成foreach生成的。

静态php代码示例如下:

$p->data = array(
    array(
        array("A",148), //value_1 for letter A
        array("B",238), //value_1 for letter B
        array("C",151)  //value_1 for letter C
        ),
    array(
        array("A",238), //value_2 for letter A
        array("B",338), //value_2 for letter B
        array("C",285)  //value_2 for letter C
        ),
    array(
        array("A",278), //value_3 for letter A
        array("B",138), //value_3 for letter B
        array("C",205)  //value_3 for letter C
        )
);

我的问题是:当我尝试使用 foreach 生成相同的结果时,我做错了。我已经尝试过嵌套的 foreach,但什么也没得到(或者也做错了),但这是我从我需要的结果中得到的最接近的结果:

foreach($result as $reg){
    $p->data = array(
        array(
            array($reg['letters'],$reg['value_1'])
        ),
        array(
            array($reg['letters'],$reg['value_2'])
        ),
        array(
            array($reg['letters'],$reg['value_3'])
        )
    );
};

相反,我只得到第一个具有正确值的字母。如果我使用 "$p->data[]" 来显示其他字母,它就不起作用了。

我从上面的代码中得到的 var_dump() 如下:

array(3) { 
    [0]=> array(1) {
        [0]=> array(2) {
             [0]=> string(1) "A"
             [1]=> int(148) }
        }
    [1]=> array(1) {
        [0]=> array(2) {
             [0]=> string(1) "A"
             [1]=> int(238) }
        }
    [2]=> array(1) {
        [0]=> array(2) {
             [0]=> string(1) "A"
             [1]=> int(278) }
        }
}

如您所见,只有第一个变量“字母”来自数组。我需要其他的,像这样:

array(3) {
    [0]=> array(3) {
        [0]=> array(2) {
            [0]=> string(1) "A"
            [1]=> int(148)
        }
        [1]=> array(2) {
            [0]=> string(1) "B"
            [1]=> int(238)
        }
        [2]=> array(2) {
            [0]=> string(1) "C"
            [1]=> int(151)
        }
    }
    [1]=> array(3) {
        [0]=> array(2) {
            [0]=> string(1) "A"
            [1]=> int(238)
        }
        [1]=> array(2) {
            [0]=> string(1) "B"
            [1]=> int(338)
        }
        [2]=> array(2) {
            [0]=> string(1) "C"
            [1]=> int(285)
        }
    }
    [2]=> array(3) {
        [0]=> array(2) {
            [0]=> string(1) "A"
            [1]=> int(278)
        }
        [1]=> array(2) {
            [0]=> string(1) "B"
            [1]=> int(138)
        }
        [2]=> array(2) {
            [0]=> string(1) "C"
            [1]=> int(205)
        }
    }
}

解释代码: 在 foreach 中我正在使用..我从数据库中获取值。每个变量“字母”有 3 个变量“值”。我试图做的是为每个数组上分隔的每个字母显示一个相同的变量值。

有人能指出我正确的方向吗?谢谢大家哦/

【问题讨论】:

    标签: php arrays loops foreach


    【解决方案1】:

    什么是 $reg['letters']? $result 是从哪里来的?

    您将需要一个字母数组,并且需要对其进行迭代。如果有更多信息,我可以提供一个示例。

    【讨论】:

    • $reg['letters'] --- 'letters' 是我数据库中的一列。我使用 foreach 从 sql 结果中读取每个句子。 'letter's 是这个结果的一部分。
    • $result[0]['letters'] = 'ABC';?如果你有'value_1'、'value_2'、'value_3',你能不能没有'letter_1'、'letter_2'、'letter_3'?
    • 我很抱歉,我的意思是继续进行,$result[1], [2]。 [3] 等等,如果它为每一个都返回 A,这意味着它对每一个都得到相同的结果。这就是错误所在。
    • 我正在尝试获取 eacn 字母的值 [1,2 和 3]。但是我只得到第一个字母的值 [1,2 和 3]。每个字母都有来自 3 个不同变量的 3 个不同值。
    猜你喜欢
    • 2023-02-05
    • 2019-10-01
    • 1970-01-01
    • 2021-03-12
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多