PHP:如果MYSQL结果大于0,是否要添加到数组?

时间:2019-04-01 14:40:25

标签: php mysql

我有一个MYSQL表,其中包含用户提供的服务列表:

这些列中的Enum值可以为0或1。 0代表未提供的服务,而1代表提供的服务。

Cleaning   Tour Guide    Cooking    Parties
0          1             0          1

然后我在MYSQL中运行以下查询以获取表中的行:

 <?php $myBio = $conn->query("SELECT * FROM user_data, user_services WHERE user_data.user_id = user_services.user_id AND user_id = $p_id");
    if ($myBio->num_rows > 0) {
    $row = $myBio->fetch_assoc();?>

我想生成用户提供的服务列表(该服务的值大于0)-并用逗号分隔列表,如下所示:

Tour Guide, Parties

我试图通过使用数组来做到这一点:

$os = array(if($row['cleaning'] > 0) { echo 'cleaning';}, if($row['tour'] >0) { echo 'Tour Guide'; });

我正在尝试使用PHP if语句在将服务添加到我的列表之前破译服务是0还是1。

我不认为可以在数组中组合php if语句。

请有人可以告诉我如何实现我想要的结果吗?预先感谢

4 个答案:

答案 0 :(得分:2)

使用array_keys()和可选的搜索参数:

$services = array_keys($row, 1);

示例:

$row = [
    'Cleaning'   => 0,
    'Tour Guide' => 1,
    'Cooking'    => 0,
    'Parties'    => 1,
];

$services = array_keys($row, 1);

var_export($services);

结果:

array (
  0 => 'Tour Guide',
  1 => 'Parties',
)

Demo

答案 1 :(得分:0)

这样的东西会达到你想要的吗?

$results=array();
if ($row['cleaning']>0) $results[]='Cleaning';
if ($row['tour']>0) $results[]='Tour Guide';
// ...

另外,请注意@tadman对准备好的语句的评论!

答案 2 :(得分:0)

如果您的数据库列中有语音名称,则可以这样操作:

<?php
    $arrayServices = array();
    $arrayAllServices = array('Cleaning','Tour Guide','Cooking','Parties');
    foreach($arrayAllServices as $service) {
        if($row[$service] > 0) {
            $arrayServices[] = $service;
        }
    }

    $sServices = join(', ', $arrayServices);

    echo $sServices;

如果口语名称与列名称不同,则需要第二个数组来查找翻译。

答案 3 :(得分:0)

<?php 
    $myResults = array();
    $myBio = $conn->query("SELECT * FROM user_data, user_services WHERE user_data.user_id = ? AND user_id = ?");
    $stmt->bind_param("ss",$user_services.user_id,$p_id);
    $stmt->execute();
    $result = $stmt->get_result();
    if($result->num_rows === 0) exit('No rows');
    while($row = $result->fetch_assoc()) 
    {
        $tempArray = array();
        $Cleaning = $row['Cleaning'];
        $Tour_Guide = $row['TourGuide'];
        $Cooking = $row['Cooking'];
        $Parties = $row['Parties'];
        if($Cleaning == 1)
            array_push($tempArray,$Cleaning)
        if($Cleaning == 1)
            array_push($tempArray,$Cleaning)
        if($Cooking == 1)
            array_push($tempArray,$Cooking )
        if($Parties == 1)
            array_push($tempArray,$Parties )
        array_push($myResults,$tempArray);
    }
?>

然后您将获得myResult数组,该数组将是一个数组数组,然后可以在子数组上循环以检查值并构造要创建的字符串。