Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将Num1与Num2与Num1-Num2格式组合?_Php_Mysql_Mysqli - Fatal编程技术网

Php 如何将Num1与Num2与Num1-Num2格式组合?

Php 如何将Num1与Num2与Num1-Num2格式组合?,php,mysql,mysqli,Php,Mysql,Mysqli,这就是我想做的 有一个行,叫做价格某些行包含一系列数字,如200-300或650-700 目前,我回显$row[“Price”] 我试图将包含一个范围的每一行显示为一个数字,如650-700行显示为675 我理解avg函数,但如何让它理解我的number1-number2格式 谢谢 最后编辑:感谢大家的贡献 我的最终解决方案是使用excel中的determinator为表格创建一个PriceMin和PriceMax列,然后这样做 谢谢 有一种说法叫价格。有些行包含一系列数字,如200-30

这就是我想做的


有一个
,叫做
价格
某些行包含一系列数字,如200-300或650-700


目前,我回显
$row[“Price”]

我试图将包含一个范围的每一行显示为一个数字,如
650-700
显示为
675

我理解
avg
函数,但如何让它理解我的
number1-number2
格式

谢谢


最后编辑:感谢大家的贡献

我的最终解决方案是使用excel中的determinator为表格创建一个
PriceMin
PriceMax
列,然后这样做

谢谢

有一种说法叫价格。有些行包含一系列数字,如200-300或650-700

我想您的意思是有一个名为
Price'的列,有些行的值是200-300?所以
Price`-col的类型是varchar

您可以尝试
substring
第一个数字和第二个数字,并将它们传递给
avg
函数,类似这样

select avg(SUBSTRING(PriceCol, 0, LOCATE('-', PriceCol) - 1, SUBSTRING(PriceCol, LOCATE('-', 'PriceCol') + 1)) from table;

使
200-300
成为
avg(200300)

注意语法错误,但我现在没有时间查找正确的语法,稍后将进行编辑,但我想您会猜到的


编辑:我想我修正了语法,还添加了带有
子字符串索引
的示例,对于这两个示例,请参见,您实际上应该更改数据库,将
价格
列设为整数,并包括
最高价格
最低价格
等列。或者您应该在PHP中执行此操作(使用函数,如和,自己进行计算)

但是,为了完整和有趣,这里有一个全SQL解决方案:

SELECT 
     SUBSTR(`Price`, LOCATE("-",`Price`)+1) + 
     SUBSTR(`Price`, 1, LOCATE("-",`Price`)-1) 
     / 2;

因此,据我所知,您正在使用
PHP
并通过
mySql
访问数据。因此,在本例中,
$row[“Price”]
包含一个带“650-700”的
字符串

一种简单的方法是将该字符串分成两部分进行计算。例如:

$range = explode("-", $row["Price"]);
[convert string to int]
$avg = ($range[1]+$range[0]) / 2;

希望这对您有所帮助

您应该更改您的表结构,并使用PriceMin和PriceMax字段(对于固定定价的项目,可能是PriceFixed,或者只有PriceMin,或者两个字段中的值相同)。这并不是计算平均值的方式。它认为您的意思是
平均值=($range[1]+$range[0])/2;
啊,是的,你是对的,抱歉。我修复了它……当然,在计算之前,你还必须将字符串转换为int:)在PHP中,不需要显式类型转换。
$range = explode("-", $row["Price"]);
[convert string to int]
$avg = ($range[1]+$range[0]) / 2;