[ create a new paste ] login | about

Link: http://codepad.org/y9m4BvBz    [ raw code | output | fork ]

PHP, pasted on Jul 12:
<?php

$input = Array (
    'key' => 'key string',
    'sub' => Array (
        0 => Array (
            'id' => 123456,
            'src' => 'source string',
            'src_ids' => Array (
                '0' => 1,
                '1' => 2,
                '2' => 3,
                '3' => 4,
            ),
            'data' => Array (
                'a_data' => 'a string',
                'b_data' => 'b string',
                'c_data' => 'c string',
            ),
        ),
        1 => Array (
            'id' => 557799,
            'src' => 'source string',
            'src_ids' => Array (
                '0' => 1,
                '1' => 2,
            ),
            'data' => Array (
                'a_data' => 'a string',
                'b_data' => 'b string',
                'c_data' => 'c string',
            ),
        ),
    ),
);

$required = array(
    'sub' => array(
        array(
            'id' => '',
            'src' => '',
            'src_ids' => '',
            'data' => array(
                'a_data' => '',
            ),
        ),
    ),
);

var_dump(checkRequired($input, $required));

/**
 * 
 * @param array $data input
 * @param array $req  mandatory fields
 * @return boolean
 */
 function checkRequired($data, $req)
{
    // no more required fields
    if (empty($req))
        return true;
 
    // no more data fields; obviously lacks required field(s)
    if (empty($data))
        return false;
        
    foreach ($req as $name => $subtree) {
        // unnamed; it's a list
        if (is_numeric($name)) {
            foreach ($data as $dataitem) {
                if (checkRequired($dataitem, $subtree) == false)
                    return false;
            }
        } else {
            // required field doesn't exist
            if (!isset($data[$name]))
                return false;
                
            // fine so far; down we go
            if (!empty($subtree)
                && checkRequired($data[$name], $subtree) == false
            ) {
                return false;
            }
        }
    }
    
    return true;
}


Output:
1
bool(true)


Create a new paste based on this one


Comments: