【问题标题】:Combining two arrays and delimiting every other with symbol (=)组合两个数组并用符号 (=) 分隔彼此
【发布时间】:2013-05-10 14:55:23
【问题描述】:

我有两个具有这种结构的变量:

$columns = "col1, col2, col3";

$values = "$value1, $value2, $value3";

我需要做什么才能获得:

$combined = "col1 = $value1, col2 = $value2, col3 = $value3";

我很确定我需要:

explode(',', $columns);
explode (',', $values);
$combined = array_combine($columns, $values);
$combined = implode(',', $combined);

但后来我得到:

$combined = "col1, $value1, col2, $value2, col3, $value3";

如何用“=”替换所有其他逗号?

这是最好的解决方法吗?

【问题讨论】:

  • 给出 col1 = $value1 = col2 = etc...
  • 就这样它消失了哈哈。
  • 大声笑,对不起,我回复得太快了,然后我意识到我错了:)
  • 否则使用循环有什么问题?
  • @HamZaDzCyber​​DeV 我该怎么做?它必须是 foreach 不是吗?

标签: php arrays delimiter


【解决方案1】:
$columns = 'col1, col2, col3';
$values = '$value1, $value2, $value3';

$result = implode(
    ', ',
    array_map(
        function ($c, $v) {
            return $c . ' = ' . $v;
        },
        explode(',', $columns),
        explode(',', $values)
    )
);

var_dump($result);

但如果你想用它来构建 SQL 插入语句,请改用 MySQLi 或 PDO 准备语句

【讨论】:

  • Array_map 嗯?哇。会试一试的!
  • 是的,这就是它的用途。我希望它插入然后更改查询 UPDATE 但它的 UPDATE 结构不同。
  • 我在 php 5.3 上运行,我不需要调整任何东西吗?
  • @Mark 我在 php 5.2.17 中执行此操作时遇到语法错误:PHP Parse error: syntax error, unexpected T_FUNCTION, expecting ')' 有什么想法吗?
  • 闭包需要 PHP>=5.3.0,因为不再支持 5.2 分支,所以无论如何你都应该升级到它
【解决方案2】:

这应该可以工作....

$columns = explode(',', $columns);
$values = explode (',', $values); 
$combined = array_combine($columns, $values);
array_walk(&$combined, function(&$v, $k){
    $v = $k."=".$v;
});
$combined = implode(",",$combined);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-12
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 2016-04-10
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多