Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 关联数组循环_Php_Arrays_Loops - Fatal编程技术网

Php 关联数组循环

Php 关联数组循环,php,arrays,loops,Php,Arrays,Loops,我有一个I数组,我试着循环槽 Output of:<?php print_r($this);?> [text] => a:2:{i:0;a:2:{s:5:"value";s:2:"de";s:5:"label";s:70:"<img src="assets/images/e/de-02d3d6ee.jpg" width="40" height="28" alt="">";}i:1;a:2:{s:5:"value";s:2:"en";s:5:"label";s:7

我有一个I数组,我试着循环槽

Output of:<?php print_r($this);?>

[text] => a:2:{i:0;a:2:{s:5:"value";s:2:"de";s:5:"label";s:70:"<img src="assets/images/e/de-02d3d6ee.jpg"  width="40" height="28" alt="">";}i:1;a:2:{s:5:"value";s:2:"en";s:5:"label";s:70:"<img src="assets/images/7/en-c5c09767.jpg"  width="40" height="28" alt="">";}}
输出:
[text]=>a:2:{i:0;a:2:{s:5:“值”;s:2:“德”;s:5:“标签”;s:70:;}i:1;a:2:{s:5:“值”;s:2:“恩”;s:5:“标签”;s:70:;}
我试过:

<?php $str ='de'; ?>

    <?php foreach ($this->text as $key => $item):?>
        <?php if ($key == $str):?>
            <span class="firstelement hide-on-mobile"><?php echo $item; ?></span>
        <?php endif;?>
    <?php endforeach;?>


我没有得到任何输出。

首先,您的数组似乎已序列化。要使用代码访问它,您需要先
unserialize()
it。(如果您尚未这样做)

问题是,您误解了数组的结构。您的阵列是这样构建的:

$labels = [
    0 => [
        'value' => 'de',
        'label' => '<img ... />'
    ],
    1 => [
        'value' => 'en',
        'label' => '<img ... />'
    ]
]

如您所见,for循环不再访问外部键,因为它们不相关,也不再使用
$value['value']
$value['label']
直接访问内部数组的字段。

首先,数组似乎是序列化的。要使用代码访问它,您需要先
unserialize()
it。(如果您尚未这样做)

问题是,您误解了数组的结构。您的阵列是这样构建的:

$labels = [
    0 => [
        'value' => 'de',
        'label' => '<img ... />'
    ],
    1 => [
        'value' => 'en',
        'label' => '<img ... />'
    ]
]

正如您所看到的,
for
循环不再访问外部键,因为它们不相关,也不再使用
$value['value']
$value['label']
直接访问内部数组的字段。

您的
$this->text
序列化()的结果
在PHP数组上运行,以将其存储在表列中。因此,它必须
未序列化()
返回到PHP数组,然后才能将其用作PHP数组

然而,当我尝试在原始序列化中也出现错误时,
$this->text
已损坏且无法使用

从你的问题中复制了你的序列化字符串,当试图取消序列化时,我得到了这个错误

$x = 'a:2:{i:0;a:2:{s:5:"value";s:2:"de";s:5:"label";s:70:"<img src="assets/images/e/de-02d3d6ee.jpg"  width="40" height="28" alt="">";}i:1;a:2:{s:5:"value";s:2:"en";s:5:"label";s:70:"<img src="assets/images/7/en-c5c09767.jpg"  width="40" height="28" alt="">";}}';
$y = unserialize($x);
print_r($y);
以及重新运行非序列化

$x = 'a:2:{i:0;a:2:{s:5:"value";s:2:"de";s:5:"label";s:74:"<img src="assets/images/e/de-02d3d6ee.jpg"  width="40" height="28" alt="">";}i:1;a:2:{s:5:"value";s:2:"en";s:5:"label";s:70:"<img src="assets/images/7/en-c5c09767.jpg"  width="40" height="28" alt="">";}}';
$y = unserialize($x);
print_r($y);
我们得到了这样一个正确的非序列化数组

s:74:"<img src="assets/images/e/de-02d3d6ee.jpg"  width="40" height="28" alt="">"
Array
(
    [0] => Array
        (
            [value] => de
            [label] => <img src="assets/images/e/de-02d3d6ee.jpg"  width="40" height="28" alt="">
        )

    [1] => Array
        (
            [value] => en
            [label] => <img src="assets/images/7/en-c5c09767.jpg"  width="40" height="28" alt="">
        )

)
数组
(
[0]=>阵列
(
[值]=>de
[标签]=>
)
[1] =>阵列
(
[值]=>en
[标签]=>
)
)
因此,简而言之,如果您从数据库中获取此数据,则在将此数据放入数据库之前,您需要查看序列化此数据的代码,以了解为什么它会首先对数组进行非直接序列化


您的
$this->text
是在PHP数组上运行
serialize()
以将其存储在表列上的结果。因此,它必须
未序列化()
返回到PHP数组,然后才能将其用作PHP数组

然而,当我尝试在原始序列化中也出现错误时,
$this->text
已损坏且无法使用

从你的问题中复制了你的序列化字符串,当试图取消序列化时,我得到了这个错误

$x = 'a:2:{i:0;a:2:{s:5:"value";s:2:"de";s:5:"label";s:70:"<img src="assets/images/e/de-02d3d6ee.jpg"  width="40" height="28" alt="">";}i:1;a:2:{s:5:"value";s:2:"en";s:5:"label";s:70:"<img src="assets/images/7/en-c5c09767.jpg"  width="40" height="28" alt="">";}}';
$y = unserialize($x);
print_r($y);
以及重新运行非序列化

$x = 'a:2:{i:0;a:2:{s:5:"value";s:2:"de";s:5:"label";s:74:"<img src="assets/images/e/de-02d3d6ee.jpg"  width="40" height="28" alt="">";}i:1;a:2:{s:5:"value";s:2:"en";s:5:"label";s:70:"<img src="assets/images/7/en-c5c09767.jpg"  width="40" height="28" alt="">";}}';
$y = unserialize($x);
print_r($y);
我们得到了这样一个正确的非序列化数组

s:74:"<img src="assets/images/e/de-02d3d6ee.jpg"  width="40" height="28" alt="">"
Array
(
    [0] => Array
        (
            [value] => de
            [label] => <img src="assets/images/e/de-02d3d6ee.jpg"  width="40" height="28" alt="">
        )

    [1] => Array
        (
            [value] => en
            [label] => <img src="assets/images/7/en-c5c09767.jpg"  width="40" height="28" alt="">
        )

)
数组
(
[0]=>阵列
(
[值]=>de
[标签]=>
)
[1] =>阵列
(
[值]=>en
[标签]=>
)
)
因此,简而言之,如果您从数据库中获取此数据,则在将此数据放入数据库之前,您需要查看序列化此数据的代码,以了解为什么它会首先对数组进行非直接序列化


你好像忘了把你的问题包括进去,当你尝试时会发生什么?您是否收到任何错误消息?@LuckyStarr
$this->text
的可能副本不是关联数组,他只是认为它是关联数组。它是一个多维数组instead@LuckyStarr你标记为重复的问题与他想要什么也没有任何关系,即使是关联数组。你似乎忘记了包含你的问题当你尝试它时会发生什么?您是否收到任何错误消息?@LuckyStarr
$this->text
的可能副本不是关联数组,他只是认为它是关联数组。它是一个多维数组instead@LuckyStarr你标记为复制的问题也与他想要什么无关,即使是一个关联数组。嗨,除了序列化数据时,序列化似乎做得不正确。请看我的答案以了解解释。这很奇怪,我在尝试取消序列化时会出错。没关系,我玩得很开心:)我没有得到任何错误:)$这个->文本是我使用的cms的东西。嗨,除了序列化数据时,序列化似乎做得不正确。请看我的答案以了解解释。这很奇怪,我在尝试取消序列化时会出错。没关系,我玩得很开心:)我没有任何错误:)$这个->文本是我使用的cms的东西。
Array
(
    [0] => Array
        (
            [value] => de
            [label] => <img src="assets/images/e/de-02d3d6ee.jpg"  width="40" height="28" alt="">
        )

    [1] => Array
        (
            [value] => en
            [label] => <img src="assets/images/7/en-c5c09767.jpg"  width="40" height="28" alt="">
        )

)