我在我的类别中创建了一个名为“sec1array”的自定义字段,以便我可以添加一个数组,例如 1,2,3,4
我想检索那个数组并在循环中输出它,所以我创建了这个代码。
$seconearray = array($cat_data['sec1array']);
$args = array(
'post__in' => $seconearray
);
然而,它似乎只是输出数组中的第一个帖子。这与逗号输出的方式有关吗?
如果我打印$ seconearray它输出正确,例如 1,2,3,4
答案 0 :(得分:2)
您正在做的是在数据库中存储字符串值"1,2,3,4"
,当您尝试从array("1,2,3,4")
构建数组时,您最终只需为该新数组分配一个值。这就是为什么它只包含一个值。
您需要以可序列化的格式存储您的值,以便在将其保存到数据库后将其转换回数组。有很多方法可以做到这一点,我相信其他人会提供更多的例子:
json_encode(array(1,2,3,4)); // store this in your db
json_decode($cat_data['sec1array']); // outputs an array
或者,您可以使用PHP serialize
serialize(array(1,2,3,4)); // store this in your db
unserialize($cat_data['sec1array']); // outputs an array
如果您想保留字符串,可以explode:
explode(',', $cat_data['sec1array']); // outputs your array of 1,2,3,4.
使用这些方法中的任何一种都可行。最后,你最终会得到一个例子:
$seconearray = explode(',', $cat_data['sec1array']);
$args = array(
'post__in' => $seconearray
);