PHP根据值将数组拆分为两个数组

Aus*_*tin 10 php arrays sorting split

我有一个PHP数组,我试图分成2个不同的数组.我试图提取包含"隐藏"一词的任何值.因此,一个数组将包含不包含单词"hidden"的所有值.另一个数组将包含包含"hidden"一词的所有值.我只是无法弄清楚如何做到这一点.

原始数组来自一个表单帖子,其中包含来自一堆复选框和隐藏输入的键和值.所以实际的post值看起来像这样:

    Group1 => Array([0] => item1,[1] => item2hidden,[2] => item3,[3] => item4,[4] => item5hidden)
Run Code Online (Sandbox Code Playgroud)

所以为了简化它:

    $myArray = Array(item1, item2hidden, item3, item4, item5hidden)
Run Code Online (Sandbox Code Playgroud)

最终输出

   $arr1 = (item1, item3, item4)
   $arr2 = (item2hidden, item5hidden)
Run Code Online (Sandbox Code Playgroud)

有谁知道怎么做这样的事情?

Gla*_*vić 18

你可以使用array_filter()功能:

$myArray = array('item1', 'item2hidden', 'item3', 'item4', 'item5hidden');

$arr1 = array_filter($myArray, function($v) { return strpos($v, 'hidden') === false; });
$arr2 = array_diff($myArray, $arr1);
Run Code Online (Sandbox Code Playgroud)

演示


Vla*_*eda 9

这应该做的伎俩:

$myArray = array('item1', 'item2hidden', 'item3', 'item4', 'item5hidden');
$secondaryArray = array();

foreach ($myArray as $key => $value) {
    if (strpos($value, "hidden") !== false) {
        $secondaryArray[] = $value;
        unset($myArray[$key]);
    }
}
Run Code Online (Sandbox Code Playgroud)

它将所有包含"hidden"的条目从$myArrayto移动$secondaryArray.

注意:它区分大小写