如何将值传递到PHP中的数组?

时间:2019-04-02 16:59:10

标签: php arrays

我正在处理如下所示的php代码,其中$data->{"articles_id_" . ICL_LANGUAGE_CODE}的值(假设我们输入了12、13、14)是通过管理门户来的。 让我们假设我为"articles_id_" . ICL_LANGUAGE_CODE

输入了 12、13、14

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代码中进行哪些更改,以便以我想要的方式返回。

4 个答案:

答案 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>:数组

     

https://www.php.net/manual/en/function.str-getcsv.php

然后,如果有,\s,则可以使用数组映射进行修剪。

'post__in' => array_map('trim', str_getcsv($data->{"articles_id_" . ICL_LANGUAGE_CODE})),

在这种情况下,它类似于explodepreg_split,但这些已经作为答案... :-p

这更像是CSV行,因此它会处理类似foo,"Some other thing",bar这样的事情-某些CSV格式(包括PHP fputcsvSplFileObject::fputcsv会在字符串中包含空格或逗号)双引号"。Explode / Preg Split将保留"但这会删除它们。它还会执行与CSV相关的其他一些操作。但是正如我所说的,在这种情况下,整数基本上是与explode(',', ...)

相同

干杯!