将变量设置为数组中的值

时间:2013-06-12 12:52:18

标签: php arrays

我需要在像这样的数组中引用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>';
                }

3 个答案:

答案 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:4s: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