根据具有一定位置的数组的值显示字符串

时间:2019-12-12 12:10:38

标签: php arrays

在我的电子商务中,我有一些购物方式,我想显示一些字符串,这些字符串取决于用户在我的网站上购物的各种方式。

我有一个数组来显示用户在我的网站上购物的所有方式,但是这些方式来自于一个单独的字符串,其中的,是分开的。

数组看起来像

$array = [
       array(
       'userShop' => '1,0,0',
       'userId' => 245
       ),

       array(
       'userShop' => '1,1,1',
       'userId' => 12 
       ),

       array(
       'userShop' => '0,1,0',
       'userId' => 25 
       )
];

数组索引userShop中的

-第一个INT表示POS存放,第二个INT表示card deposit,第三个INT表示cash deposit0的意思是不要走这种路,1的意思是这样走路

我想得到这样的输出:

<p>245</p>
<p>POS</p>
<hr>

<p>12</p>
<p>POS, Cart, Cash</p>
<hr>

<p>25</p>
<p>Cart</p>
<hr> 

我可以使用ifelseif来完成所有方法和方式,但这确实很无聊。

1 个答案:

答案 0 :(得分:0)

您可以应用以下foreach循环:

$names = ['POS', 'Card', 'Cash'];

foreach($array as $rec){

    $nums = explode(',',$rec['userShop']);      // explode
    $rnames = [];                               
    foreach ($nums as $ind=>$val){              // check each 1 or 0
        if ($val) $rnames[] = $names[$ind];     // fill the names
    } 

    // print result
    echo '<p>'.$rec['userId'].'</p>'.PHP_EOL. 
         '<p>'.join(', ',$rnames).'</p>'.PHP_EOL.
         '<hr>'.PHP_EOL;
}

输出:

<p>245</p>
<p>POS</p>
<hr>
<p>12</p>
<p>POS, Card, Cash</p>
<hr>
<p>25</p>
<p>Card</p>
<hr>

Demo