Следуя этому вопрос и ответ, я решил принять только логическое значение true и false и не даже null
из ввода другого разработчика/пользователя.
$default = array(
"category_id" => null,
"category" => false,
"randomise" => false
);
$config = array(
"category_id" => 17,
"randomise" => false,
"category" => null
);
function process_array($default,$config)
{
# Set empty arrays for error & items.
$error = array();
$items = array();
# Loop the array.
foreach($default as $key => $value)
{
if (is_bool($default[$key]) && isset($config[$key]))
{
if ($config[$key] === null) $error[] = '"'. $key.'" cannot be null.';
# Make sure that the value of the key is a boolean.
if (!is_bool($config[$key]))
{
$error[] = '"'. $key.'" can be boolean only.';
}
}
if(isset($config[$key]) && !is_array($value))
{
$items[$key] = $config[$key];
}
elseif(isset($config[$key]) && is_array($value))
{
$items[$key] = array_merge($default[$key], $config[$key]);
}
else
{
$items[$key] = $value;
}
}
# Give a key to the error array.
$error = array("error" => $error);
# Merge the processed array with error array.
# Return the result.
return array_merge($items,$error);
}
print_r(process_array($default,$config));
но результат, который я получаю,
Array
(
[category_id] => 17
[category] =>
[randomise] =>
[error] => Array
(
)
)
результат, которого я добиваюсь,
Array
(
[category_id] => 17
[category] =>
[randomise] =>
[error] => Array
(
[0] => "category" cannot be null.
)
)
Поэтому я подумал, что эта строка ниже должна работать, но я не понимаю, почему это не так. Я пытался использовать is_null
, но все равно не работал. Любая идея, что я сделал неправильно и как я могу это исправить?
if ($config[$key] === null) $error[] = '"'. $key.'" cannot be null.';