在关联数组中插入php变量中的元素

时间:2013-06-18 06:16:42

标签: php arrays string associative-array

我有一个像这样的条件字符串:

echo $cnd = "'use_funds'=>'no'";

我的$data数组是:

$data = array(
    $cnd,
    'quantity'   => $_POST['qty_' . $q],
    'veg_name'   => $_POST['veg_name_' . $q],
    'rate'       => $_POST['rate_' . $q],
    'ws_price'   => $_POST['ws_price_' . $q],
    'ret_price'  => $_POST['ret_price_' . $q],
    'mop'        => $_POST['mop_' . $q],
    'ret_margin' => $_POST['ret_margin_' . $q]
);

以上echo $cnd显示'use_funds'=>'no',但var_dump($data)显示array 0 => string ''use_funds'=>'no'' (length=17)。因为它是一个字符串,我的数据不会插入到我的表中。如何将$cnd变为关联数组元素而不是字符串?

6 个答案:

答案 0 :(得分:3)

if (your condition) {
  $data['use_funds'] = 'no';
} else {
  //some other code
}

答案 1 :(得分:2)

不要使用$ cnd部分在数组中生成和插入数据:

使用以下代码:

$data['use_funds'] = 'no';

此代码将附加数组。 或者您可以使用PHP的array_push功能。

答案 2 :(得分:1)

如果必须是字符串,请将其拆分并添加到数组中。 http://php.net/manual/en/function.explode.php

explode函数接受一个字符串并将其分解为数组

$my_string_split = explode('=>', $cnd);
// returns [0 => 'use_funds', 1 => 'no']
$data[$my_string_split[0]] = $my_string_split[1];

如果它不需要是字符串,请按字面意思执行:

$data['use_funds'] = 'no';

答案 3 :(得分:0)

首先,您的$cnd是字符串,而不是数组。并且您尝试使用$cnd数组附加此$data

为了向数组添加元素,我们基本上使用push()方法。对于您的情况,如果您使用array_push方法,那么您将获得如下所示的输出

array_push($cnd,$data);
$data=array(
                                    0=>'use_funds'=>'no',
                                    'quantity'=>$_POST['qty_'.$q],
                                    'veg_name'=>$_POST['veg_name_'.$q],
                                    'rate'=>$_POST['rate_'.$q],
                                    'ws_price' => $_POST['ws_price_'.$q],
                                    'ret_price' => $_POST['ret_price_'.$q],
                                    'mop' => $_POST['mop_'.$q],
                                    'ret_margin' =>$_POST['ret_margin_'.$q]
  );

所以如果你想要你想要的结果,那么我的建议就是按照以下步骤: -

 either define your $cnd as an array and then use array_merge();

答案 4 :(得分:0)

echo $cnd = "'use_funds'=>'no'";

上述行将"'use_funds'=>'no'"视为字符串,并将其分配给$cnd。所以无论如何,它总是保持为一个字符串,除非你对它进行任何适当的改变。在这种情况下,默认密钥为0。所以,它会像:

[0] => "'use_funds'=>'no'"

要解决此问题,您可以执行此操作:

$cnd = array('use_funds'=>'no');

然后,你使用array_merge()函数来合并这两个:

array_merge($cnd, $data);

答案 5 :(得分:-1)

您可以使用eval

完成此操作
$cnd = "'use_funds'=>'no'";

eval("\$x = array($cnd);");

print_r($x);