我正在处理如下所示的php代码,其中$data->{"articles_id_" . ICL_LANGUAGE_CODE}
的值(假设我们输入了12、13、14)是通过管理门户来的。
让我们假设我为"articles_id_" . ICL_LANGUAGE_CODE
Php代码:
'post__in' => array($data->{"articles_id_" . ICL_LANGUAGE_CODE}),
在调试时它将返回:
[post__in] => Array
(
[0] => 12, 13, 14
)
我想这样返回:
[post__in] => Array
(
[0] => 12
[1] => 13
[2] => 14
)
问题陈述:
我想知道应该在上面的php代码中进行哪些更改,以便以我想要的方式返回。
答案 0 :(得分:3)
爆炸或preg_split。
爆炸是静态的,必须同时包含逗号和空格。
'post__in' => explode(", ",$data->{"articles_id_" . ICL_LANGUAGE_CODE}),
Preg_split可以有一个可选的空间,这意味着它可以拆分"12,13,14"
和"12, 13, 14"
甚至爆炸无法实现的"12, 13, 14"
之类的字符串。
'post__in' => preg_split("/,\s*/",$data->{"articles_id_" . ICL_LANGUAGE_CODE}),
如果是用户输入,则需要拆分,那么我肯定会去做preg_split。
对于“普通”人(而不是程序员),在数字之间插入空格是很常见的。
答案 1 :(得分:2)
如果$data->{"articles_id_" . ICL_LANGUAGE_CODE}
的值是逗号分隔的字符串,则应explode()
对其进行>
'post__in' => explode(",", $data->{"articles_id_" . ICL_LANGUAGE_CODE})
答案 2 :(得分:1)
'post__in' => explode(',', $data->{"articles_id_" . ICL_LANGUAGE_CODE}),
答案 3 :(得分:1)
您也可以使用它:
'post__in' => str_getcsv($data->{"articles_id_" . ICL_LANGUAGE_CODE}),
str_getcsv —将CSV字符串解析为数组
str_getcsv( string $ input , string $ delimiter =“, “,字符串 $外壳 ='”“,字符串 $转义 =” \“ )< / strong>:数组
然后,如果有,\s
,则可以使用数组映射进行修剪。
'post__in' => array_map('trim', str_getcsv($data->{"articles_id_" . ICL_LANGUAGE_CODE})),
在这种情况下,它类似于explode
或preg_split
,但这些已经作为答案... :-p
这更像是CSV行,因此它会处理类似foo,"Some other thing",bar
这样的事情-某些CSV格式(包括PHP fputcsv
和SplFileObject::fputcsv
会在字符串中包含空格或逗号)双引号"
。Explode / Preg Split将保留"
但这会删除它们。它还会执行与CSV相关的其他一些操作。但是正如我所说的,在这种情况下,整数基本上是与explode(',', ...)
干杯!