从foreach取到的数据,假设少了谁,就宣告为0?

透过某个数据库会取得 a, b, c

foreach ($XXX as $key) {
echo $key['string'];
output: a, b, c
}

「结果」就是这三个字串的组合
有可能只有 a, 有可能只有c, 有可能有 bc, 有可能 ac....等等
假设这次只有 c
则可以宣告

$aa = 0;
$bb = 0;

假设这次为 a, b

$cc = 0;

假设这次为 a, c

$bb = 0;

这要如何聪明的实现?
就是可以知道少了誰,就把不在的變成 0
$aa 代表 a
$bb 代表 b
$cc 代表 c

起初是這樣寫

foreach ($XXX as $key) {
    if ($key['string'] == 'a') {
    $bb = 0;
    $cc = 0;
    }
    if ($key['string'] == 'b') {
    $aa = 0;
    $cc = 0;
    }
    if ($key['string'] == 'c') {
    $aa = 0;
    $bb = 0;
    }
}

但如果他同時有 a 跟 b呢 (因為不只一個)
這樣 $aa, $bb, $cc 都會是0
我要的是同時有 a跟b時,只要 $cc = 0 就行(當然有時候可能會是 b,c 或 a,c.....等)

阅读 2.7k
3 个回答

是这种吗?

public static function sort($array)
{
    $reverse = array_flip($array);
    $aa = !array_key_exists('a', $reverse) ? 0 : 'a';
    $bb = !array_key_exists('b', $reverse) ? 0 : 'b';
    $cc = !array_key_exists('c', $reverse) ? 0 : 'c';
}

Array.indexOf(String)

不是很看懂这个需求,有点没理解。
是从数据库取了一些数据,把不存在的几个的默认值搞成0值么?
数据不多的话,你先建一个数组,把字段都写进去,给默认0值,从数据库过来的,你在foreach里面覆盖到数组里面,不就可以了??

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题