Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中在数组中存储零_Php_Arrays_While Loop - Fatal编程技术网

如何在php中在数组中存储零

如何在php中在数组中存储零,php,arrays,while-loop,Php,Arrays,While Loop,我试图将值0存储在关联数组中,以便以后将其用作另一个数组的键 但是,我无法使用下面的代码检索0 在while循环中,当内容为0时,它们的“subject”键被完全忽略 任何其他值都可以 如何循环关联数组并获得0值 这种行为的原因是什么 $requestdata = []; $requestdata['company'] = 'some company'; $requestdata['country'] = 'some country'; $requestdata['message'] = 's

我试图将值0存储在关联数组中,以便以后将其用作另一个数组的键

但是,我无法使用下面的代码检索0

在while循环中,当内容为0时,它们的“subject”键被完全忽略

任何其他值都可以

如何循环关联数组并获得0值

这种行为的原因是什么

$requestdata = [];

$requestdata['company'] = 'some company';
$requestdata['country'] = 'some country';
$requestdata['message'] = 'some message';
$requestdata['link'] = 'www.somelink.com';
$requestdata['containers'] = 'some container';
$requestdata['products'] = 'some product';
$requestdata['subject'] = 0;


while (current($requestdata)):

        $key = key($requestdata);

        if($key != "subject"):

           $ncf_values = [];
           $ncf_values["fieldValue"] = [];
           $ncf_values["fieldValue"]["contact"] = 120;
           $ncf_values["fieldValue"]["field"] = 12;
           $ncf_values["fieldValue"]["value"] = $requestdata[$key];

        elseif($key == "subject"):

            $subjects_array = ["Selling","Buying", "Services", "Other"];
            $ncf_values = [];
            $ncf_values["fieldValue"] = [];
            $ncf_values["fieldValue"]["contact"] = 120;
            $ncf_values["fieldValue"]["field"] = 12;
            $ncf_values["fieldValue"]["value"] =  $subjects_array[$requestdata[$key]];

        endif;

        next($requestdata);

endwhile;
因为0的计算结果松散地为false,而while终止。明确测试:

while (current($requestdata) !== false):
但是,为什么不使用foreach呢

最好是这样:

    $subjects_array = ["Selling", "Buying", "Services", "Other"];

    $requestdata = [
        'company' => 'some company',
        'country' => 'some country',
        'message' => 'some message',
        'link' => 'www.somelink.com',
        'containers' => 'some container',
        'products' => 'some product',
        'subject' => 0,
    ];

    $ncf_values = [];
    foreach ($requestdata as $key => $value) {
        $ncf_values[ "fieldValue" ] = [];
        $ncf_values[ "fieldValue" ][ "contact" ] = 120;
        $ncf_values[ "fieldValue" ][ "field" ] = 12;
        $ncf_values[ "fieldValue" ][ "value" ] = $key == 'subject' ? $subjects_array[ $requestdata[ $key ] ] : $requestdata[ $key ];
    }

谢谢,foreach成功了。我将更深入地研究这个零价值的东西。我知道这可能意味着false,但是为什么while循环认为值为零的键基本上不存在,这仍然让我有点震惊。while循环while表达式为true。当强制转换为布尔值为false时为0。while0永远不会执行,whilearay,whilenull也不会执行。尝试var_dump0==false;和var_dump0===false;谢谢@abracadver。这是有道理的!
    $subjects_array = ["Selling", "Buying", "Services", "Other"];

    $requestdata = [
        'company' => 'some company',
        'country' => 'some country',
        'message' => 'some message',
        'link' => 'www.somelink.com',
        'containers' => 'some container',
        'products' => 'some product',
        'subject' => 0,
    ];

    $ncf_values = [];
    foreach ($requestdata as $key => $value) {
        $ncf_values[ "fieldValue" ] = [];
        $ncf_values[ "fieldValue" ][ "contact" ] = 120;
        $ncf_values[ "fieldValue" ][ "field" ] = 12;
        $ncf_values[ "fieldValue" ][ "value" ] = $key == 'subject' ? $subjects_array[ $requestdata[ $key ] ] : $requestdata[ $key ];
    }