首页 > 解决方案 > 如何在php中将零存储在数组中

问题描述

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

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

发生的情况是,在 while 循环中,当内容为 0 时,它们的“主题”键被完全忽略。

任何其他值都可以。

如何循环关联数组并获得 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;

标签: phparrayswhile-loop

解决方案


因为0松散地评估falsewhile终止。显式测试:

while (current($requestdata) !== false):

但是,您为什么不使用foreach?

foreach($requestdata as $key => $val) {
    // use $key and $val
}

推荐阅读