【问题标题】:Check array key and replace if exist Php检查数组键,如果存在则替换 PHP
【发布时间】:2021-09-01 08:02:09
【问题描述】:

我有以下数组 ($result)

Array
(
    [check_1] => Array
        (
            [0] => male
            [1] => female
        )

    [email] => abc@xyz.com
)

我只是想检查

  1. 数组键是否包含单词“check”(id 将是动态的,id 可以是 1 或 2 ...)
  2. 如果存在“check”键,则所有值(复选框)都应类似于“male,female”
  3. 我想将“check_1”替换为“user_1”

我想要像下面这样的输出

Array
(
    [user_1] => Array
        (
           [0] male,female
        )
  
)

我该怎么做?提前致谢

【问题讨论】:

标签: php arrays loops


【解决方案1】:

您可能必须使用带有 str_containsstr_replaceimplode 等函数的循环进行连接。

$data = [
            'check_1'=>["male"],
            'email'=>["abc@xyz.com"],
            'check_3'=>["male", "female"],
        ];
$res = [];
foreach ($data as $key => $value) {
    if(strrpos($key, "check")!==false){
        $res[str_replace("check", "user", $key)] = implode(', ', $value);
    }
}
echo "<PRE>";
print_r($res);
/*
Array
(
    [user_1] => male
    [user_3] => male, female
)
*/

【讨论】:

  • 1:给我以下错误调用未定义函数 str_contains()
  • 你用的是什么版本的PHP?
  • 不是每个人都接受了 php8 :) 许多人还在适应 7 的变化哈哈。
  • @ Steverest1 : 我正在使用 PHP 7
  • 没问题,我更新了答案,改用strrpos 函数,如果您的问题通过这个答案得到解决,如果您支持并将其标记为已接受,我将不胜感激:)跨度>
【解决方案2】:

你会使用:

foreach($result as $key => $value) {
    if(substr($key,0,6) == 'check_') {
        $id = substr($key, strrpos($key,'_'));
        $result['user' . $id][] = implode(',',$value);
        unset($result[$key]);
    }
}

它会返回:

Array
(
    [email] => abc@xyz.com
    [user_1] => Array
        (
            [0] => male,female
        )

)

【讨论】:

  • 我希望男性和女性在一个键/列中,我想像 [0] => 男性,女性
  • 不工作,而且选项(男、女)不是固定的,可以是动态的
猜你喜欢
  • 1970-01-01
  • 2010-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-31
  • 1970-01-01
相关资源
最近更新 更多