PHP如何在关联数组中填充默认值?

PHP如何在关联数组中填充默认值?,php,arrays,Php,Arrays,我有这样一个关联数组: $list = array("key1"=>3,"key2"=>5,"key3","key4"=>2); 当我打印$list的值时,我得到以下结果: Array ( [key1] => 3 [key2] => 5 [0] => key3 [key4] => 2 ) 检查数组中的每个键是否已用整数填充,并在尚未获得值时将其设置为默认值1的最佳方法是什么 因此,检查后上述数组

我有这样一个关联数组:

$list = array("key1"=>3,"key2"=>5,"key3","key4"=>2);
当我打印$list的值时,我得到以下结果:

Array ( [key1] => 3 
        [key2] => 5 
        [0] => key3 
        [key4] => 2 ) 
检查数组中的每个键是否已用整数填充,并在尚未获得值时将其设置为默认值1的最佳方法是什么

因此,检查后上述数组的最终结果应为:

Array ( [key1] => 3 
        [key2] => 5 
        [key3] => 1
        [key4] => 2 ) 

布尔检查,如果数组的所有值都是整数

$is_all_integer = array_filter($list, function($v){return is_int($v);}) === $list;
如果不是所有值都是整数,则将默认值设置为1

if(!$is_all_integer)
    $list = array_map(function(&$v){return is_int($v) ? $v : 1;}, $list);
试试这个

<?php

$list = array("key1"=>3,"key2"=>5,"key3","key4"=>2);

foreach($list as $key=> $value)
{
    if(is_numeric($key))
    {
        unset($list[$key]);
        $list[$value] = 1;
    }

}

ksort($list);
echo "<pre>";
print_r($list);

您可以循环检查该值是否为数字,如果不是,则添加1。。看看你试过什么了吗?
检查数组中的每个键是否都用整数填充了
这一行应该是
检查数组中的每个值是否都用整数填充了
如果你对其进行编辑以包含一些解释,你的答案会更有用。
<?php

$list = array("key1"=>3,"key2"=>5,"key3","key4"=>2);

foreach($list as $key=> $value)
{
    if(is_numeric($key))
    {
        unset($list[$key]);
        $list[$value] = 1;
    }

}

ksort($list);
echo "<pre>";
print_r($list);