从MySQL列获取数组

时间:2016-10-26 15:45:20

标签: php mysql arrays foreach

我在我的数据库中将一个逗号分隔值数组存储在一个名为line_services的列中。该列中的数据看起来像1,1,1,1,0,0,0,我有一个准备好的语句,我将此列的结果绑定到变量$line_services。在这个准备好的语句中,我在获取之后有以下代码。

foreach(explode(',', $line_services) as $lineservices) {
    if ($lineservices == '1') {
        strtolower(str_replace('','_',$service_name.'_total')) = ((($service_tax / 100) * $service_cost) + 80.00) * $line_artwork_hours;  //1 hour
    }
    if ($lineservices == '2') {
        strtolower(str_replace('','_',$service_name.'_total')) = ((($service_tax / 100) * $material_cost) + $material_cost) * $line_product_sqft; //2 sq ft
    }    
    if ($lineservices == '3') {
        strtolower(str_replace('','_',$service_name.'_total')) = (($service_tax / 100) * ($line_L + $line_W)) + ($line_L + $line_W); //3 linear
    } 
    if ($lineservices == '4') {
        strtolower(str_replace('','_',$service_name.'_total')) = (($service_tax / 100) * (($line_L + $line_W) * 2) * .75) + (($line_L + $line_W) * 2) * .75; //4 linear
    } 
}

我收到以下错误:

  

在写上下文中不能使用函数返回值

当我在var_dump$line_services时,即使列中有数据,它也会出现NULL。如果存在任何差异,则数据库中的line_services列是varchar。

3 个答案:

答案 0 :(得分:2)

您正在使用strtolower的作业,而您无法执行此操作。检查您的代码:

strtolower(str_replace(...)) = ...;

这没有任何意义。你想做什么?您没有将(($service_tax / 100) * ($line_L + $line_W)) + ($line_L + $line_W)(例如)的结果分配给任何变量。

答案 1 :(得分:1)

我假设您正在尝试variable variables?很少有一个好主意,但你可以使用卷曲语法:

${strtolower(str_replace('','_',$service_name.'_total'))} = 'whatever'; 

考虑使用数组:

$total[$service_name] = 'whatever';

答案 2 :(得分:0)

首先,你要覆盖你的变量。

foreach(explode(',', $line_services) as $lineservices)

将其切换为:

foreach(explode(',', $line_services) as $lineservice)

其次,你期待在这里发生什么?

strtolower(str_replace('','_',$service_name.'_total')) = ((($service_tax / 100) * $service_cost) + 80.00) * $line_artwork_hours;

您是否尝试为strtolower函数指定一个值?