【问题标题】:Getting Array from MySQL Column从 MySQL 列获取数组
【发布时间】:2016-10-26 15:45:20
【问题描述】:

我将一个逗号分隔值数组存储在我的数据库中名为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
    } 
}

我收到以下错误:

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

当我在$line_services 上执行var_dump 时,即使列中有数据,它也会出现NULL。如果这有什么不同的话,数据库中的 line_services 列是一个 varchar。

【问题讨论】:

  • 请为“当我在 $line_services 上执行 var_dump 时出现 NULL”添加其余代码
  • 你是放弃还是什么???
  • 我没有放弃。删除了 strtolower 并且它起作用了。我最终并没有直接使用数组变量。

标签: php mysql arrays foreach


【解决方案1】:

您正在使用对 strtolower 的赋值,但您不能这样做。检查您的代码:

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

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

【讨论】:

  • 所有变量都在我准备好的语句中定义
  • 目标是让数学论坛的结果存储在变量$service_name_total
  • 这个好点,不知道你不能用strtolower
  • 我不是说你不能用strtolower,我是说你用的方式不对。
【解决方案2】:

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

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

考虑使用数组代替:

$total[$service_name] = 'whatever';

【讨论】:

  • 最终没有使用变量 variable 但 strtolower 导致了大问题。我使用了一个直接向上的数组。谢谢!
【解决方案3】:

对于初学者,您正在覆盖 foreach 中的变量。

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 函数赋值?

【讨论】:

  • $line_services != $lineservices。没有覆盖。
  • 例如,我有一个名为 Graphic Design 的服务,所以 strtolower 和 str_replace 的目的是确保所有变量都以 variable_name 而不是 Variable Name 的形式出现。
  • 目标是将数学公式的结果存储在变量$service_name_total
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
相关资源
最近更新 更多