我需要在像这样的数组中引用value1,value2或value3:
a:3:{i:0;s:4:"value1";i:1;s:5:"value2";i:2;s:4:"value3";}
值1,2或3实际上是ID,我需要找到一种方法将它们设置为等于$item->ID
,以便它们可以在下拉菜单中保存为选中状态。数组也是无限的 - 不一定是a:3
(我正在尝试创建可重复的选择框。)
基本上我需要在数组中每隔三个项设置一个变量引用。
我希望得到一些帮助。你可能会说我在php上相当新。
编辑:我想我已经解释得很糟糕了。基本上为了让我的代码工作我需要 $ meta to equal $ item-ID现在meta等于a:1:{i:0; s:3:“202”;}和$ item-ID等于202.我无法更改值或它是seralized的事实,因为它来自wordpress并且我正在访问信息已经存在。
foreach($items as $item) {
echo '<option value="'.$item->ID.'"',$meta == $item->ID ? ' selected="selected"' : '','>'.$item->display_name.'</option>';
}
答案 0 :(得分:0)
$x = unserialize($your_array);
foreach ($x as $key => &$val) {
if ($key % 3 == 0) {
$val = $item->ID;
}
}
答案 1 :(得分:0)
如果我是你,我会反序列化为正常数组 - 然后更改我想要的任何内容然后重新序列化
如下:
$newArray = unserialize('a:3:{i:0;s:6:"value1";i:1;s:6:"value2";i:2;s:6:"value3";}');
foreach($newArray as something){} //or whatever else you want to do on the normal array.
$serializeArray = serialize ($newArray);
基本上我认为使用序列化数组是一个错误。
答案 2 :(得分:0)
这看起来像一个序列化的数组表示。但它有错误。字符串长度s:4
或s:5
是错误的。虽然手动解决这个问题真的很麻烦,但是这里有工作代码,我设置了s:6
,因为字符串有6个字符:
$a = unserialize('a:3:{i:0;s:6:"value1";i:1;s:6:"value2";i:2;s:6:"value3";}');
var_dump($a);
输出:
array(3) {
[0] =>
string(6) "value1"
[1] =>
string(6) "value2"
[2] =>
string(6) "value3"
}
现在你有了一个数组。但问题是,你怎么能得到那个字符串?你在做什么?
如果您正在寻找如何在php中定义数组的方法,请使用此示例:
$array = array ('value1', 'value2', 'value3');
还有其他方法可以定义数组。请read the manual about arrays