implode(',', $a);
我想像这样将$q
变量附加在$a
前面
implode(',', $q.$a);
但这不起作用。如何将2个变量放入内爆函数中?
$a
是一个包含诸如“ com,org”之类的域名的数组,而$q
是您在域名出现之前输入的文本(字符串)。
我收到以下错误:
无效的参数在行中传递。
整个代码:
$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);
}
答案 0 :(得分:1)
如果$a
是一个数组,而$q
是前缀字符串,则可以通过两个步骤实现:
添加前缀:
$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
答案 1 :(得分:0)
您需要在$q
函数之前添加implode
。您可以使用$q
函数将$a
添加到array_map
数组中。
$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);
答案 2 :(得分:0)
尝试一下
$a = array("com", "co");
$q = "robot.c";
$temp = explode(".",$q);
foreach ($a as $value)
echo $value = $temp[0].".".$value;
答案 3 :(得分:0)
假设您的业务逻辑保证$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>';
这个想法是,在第一个值之前先添加所需的内容,然后将粘连声明为每个值之后和下一个值之前需要出现的字符。