Php 关联数组循环
我有一个I数组,我试着循环槽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
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="">
)
)