我在我的数据库中将一个逗号分隔值数组存储在一个名为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。
答案 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函数指定一个值?