在 PHP 内爆中合并一个带有字符串变量的数组

Merge an array with a string variable in PHP implode

implode(',', $a);

我想在 $a 前面附加 $q 变量,就像这样

implode(',', $q.$a); 

但这行不通。我如何将 2 个变量放入内爆函数?

$a 是一个包含域名的数组,例如 "com, org",$q 是您在域名出现之前输入的文本(字符串)。

我收到以下错误:

invalid argument passed in line..

完整代码:

$a = ['nl','net','com','co'];
$q = $_REQUEST["q"];

$domain = explode(".", $q);
$ext = @$domain[1] ?: ' ';


if (empty($ext)) {
    echo implode(',',$a);
} else if (in_array($ext, $a)) {
    echo $q;
} else {
    $r = [];
    foreach ($a as $x) {
        if (strstr($x, $ext)) {
            $r[] = $x;
        }
    }
    echo (count($r)) ? implode(',',$r) : implode(',',$a);
}

如果 $a 是一个数组并且 $q 是前缀字符串,您可以通过 2 个步骤实现:

添加前缀:

$a = array("com", "co");
$q = "robot.";
foreach ($a as &$value)
    $value = $q.$value;

其次,使用内爆:

echo implode(',',$a);

输出为:

robot.com,robot.co

已编辑

我觉得这个更适合你:

$a = array("com", "co", "org");
$q = "robot.c";
$arr =  explode(".", $q);

$output = array();
foreach ($a as &$value) {
    if (substr($value, 0, strlen($arr[1])) === $arr[1])
        $output[]= $arr[0] . "." . $value;
}
echo implode(',',$output);

在此代码中,您使用域前缀并搜索可能适合该前缀的所有域名。

请注意,在这个例子中我们有域 org 但他没有出现,因为您的前缀是 c

您需要在 implode 功能之前添加您的 $q。您可以使用 array_map 函数将 $q 添加到 $a 数组中。

$array = array('com', 'org', 'net');
$q = 'test';
$array = array_map(function($value) { 
                    $q= "test"; // you $q value goes here.
                    return $q.".".$value; 
         }, $array);

echo implode(',',$array);

在内爆函数

的帮助下,在PHP中合并一个带有字符串变量的数组
$a = array("com", "co");
$q = "robot.c";
$temp = explode(".",$q);
foreach ($a as $value)
    echo $value = $temp[0].".".$value;

假设你的业务逻辑保证$a永远不会为空,那么这里是最直接、高效、简洁的技巧...

代码:(Demo)

$a = ['nl', 'net', 'com', 'co'];
$q = 'example';

echo "$q." . implode(",$q.", $a);

输出:

example.nl,example.net,example.com,example.co

看看为什么不需要循环或调用任何额外的函数?

这种扩展定界胶的基本技术可以在其他用法中看到,例如:

echo '<tr><td>' . implode('</td><td>', $array) . '</td></tr>';

我们的想法是,在第一个值之前添加您需要的内容,然后将粘合声明为您需要在每个值之后和下一个值之前出现的字符。