在 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>';
我们的想法是,在第一个值之前添加您需要的内容,然后将粘合声明为您需要在每个值之后和下一个值之前出现的字符。
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>';
我们的想法是,在第一个值之前添加您需要的内容,然后将粘合声明为您需要在每个值之后和下一个值之前出现的字符。