开发者

How do i split this array into two?

I have this array.

Array
(
    [name] => Array
        (
            [isRequired] => 1
            [isBetween] => 1
            [isAlphaLower] => 
            [isLength] => 
        )

    [email] => Array
        (
            [isEmail] => 1
        )

    [pPhone] => Array
        (
            [isPhone] => 
        )

)

i want to split the array into two.

1. array with all boolean value true

Array
(
    [name] => Array
        (
            [isRequired] => 1
            [isBetween] => 1
        )

    [email] => Array
        (
            [isEmail] => 1
        )

)

2. array with all boolean value false

Array
(
    [name] => Array
        (
            [isAlphaLower] => 
            [isLength] => 
        )

    [pPhone] => Array
        (
            [isP开发者_JAVA技巧hone] => 
        )
)

How do i do it?

thank you..


  1. initialize the two new arrays
  2. foreach the input array
  3. foreach the inner array of each input array entry
  4. according to the value set the one or the other of the two new arrays
  5. done.

Example:

$arrayTrue = $arrayFalse = arrray(); # 1
foreach($arrayInput as $baseKey => $inner) # 2
    foreach($inner as $key => $value) # 3
        if ($value) $arrayTrue[$basekey][$key] = $value; # 4
        else $arrayFalse[$basekey][$key] = $value;


function is_true($var) {
    return $var;
}
function is_false($var) {
    return !$var;
}

$result_true = array();
$result_false = array();
foreach ($array as $k => $a) {
    $result_true[$k] = array_filter($a, 'is_true');
    $result_false[$k] = array_filter($a, 'is_false');
};

or

$result_true = array();
$result_false = array();
foreach ($array as $k => $a) {
    $result_true[$k] = array_filter($a);
    $result_false[$k] = array_filter($a, function ($x) { return !$x; } );
};


As your array is a 2 level array, you will need to use 2 loops.

$trueValues = array();
$falseValues = array();
foreach($input AS $key=>$firstLevelValue) {
    foreach($firstLevelValue AS $key2=>$secondLevelValue)  {
        if ($secondLevelValue)
            $trueValues[$key][$key2] = $secondLevelValue;
        else
            $falseValues[$key][$key2] = $secondLevelValue;
    }
}

A 3 level array would be:

$trueValues = array();
$falseValues = array();
foreach($input AS $key=>$firstLevelValue) {
    foreach($firstLevelValue AS $key2=>$secondLevelValue)  {
        foreach($secondLevelValue AS $key3=>$thirdLevelValue)  {
            if ($thirdLevelValue)
                $trueValues[$key][$key2][$key3] = $thirdLevelValue;
            else
                $falseValues[$key][$key2][$key3] = $thirdLevelValue;
        }
    }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜