0

我需要在这样的数组中引用 value1、value2 或 value3:

a:3:{i:0;s:4:"value1";i:1;s:5:"value2";i:2;s:4:"value3";}

值 1、2 或 3 实际上是 id,我需要找到一种方法将它们设置为等于 an $item->ID,以便它们可以保存为在下拉菜单中选择。数组也是无限的 - 不一定a:3(我正在尝试创建可重复的选择框。)

基本上我需要在数组中每隔三个项目设置一个变量引用。

我希望得到一些帮助。正如您可能会说我在 php 方面相当新。

编辑:我想我已经解释得很糟糕了。基本上为了使我的代码工作我需要 $meta 等于 $item-ID 现在 meta 等于 a:1:{i:0;s:3:"202";} 并且 $item-ID 等于202. 我无法更改值或它被序列化的事实,因为它来自 wordpress,并且我正在访问已经存在的信息。

foreach($items as $item) {
echo '<option value="'.$item->ID.'"',$meta == $item->ID ? ' selected="selected"' : '','>'.$item->display_name.'</option>';
                }
4

3 回答 3

0
$x = unserialize($your_array);
foreach ($x as $key => &$val) {
    if ($key % 3 == 0) {
        $val = $item->ID;
    }
}
于 2013-06-12T13:01:35.777 回答
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);

基本上在我看来,使用序列化数组是一个错误..

于 2013-06-12T13:04:42.290 回答
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');

还有其他定义数组的方法。请阅读有关数组的手册

于 2013-06-12T13:06:03.380 回答