我正在寻找一种快速的方法将关联数组转换为字符串.典型的结构类似于URL查询字符串,但具有可自定义的分隔符,因此我可以使用' &'用于xhtml链接或' &'.
我的第一个倾向是使用,foreach但由于我的方法可以在一个请求中多次调用,我担心它可能太慢.
<?php
$Amp = $IsXhtml ? '&' : '&';
$Parameters = array('Action' => 'ShowList', 'Page' => '2');
$QueryString = '';
foreach ($Parameters as $Key => $Value)
$QueryString .= $Amp . $Key . '=' . $Value;
Run Code Online (Sandbox Code Playgroud)
有更快的方法吗?
扼杀一个简单的数组
看起来像这样
$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);
Run Code Online (Sandbox Code Playgroud)
那会回来的
lastname,email,phone
Run Code Online (Sandbox Code Playgroud)
很棒,所以我可能会这样做
$array = array('lastname', 'email', 'phone');
$comma_separated = implode("','", $array);
$comma_separated = "'".$comma_separated."'";
Run Code Online (Sandbox Code Playgroud)
现在我有我想要的漂亮的csv字符串
'lastname','email','phone'
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点,我觉得应该有一个可选参数implode我错过了什么?
没有foreach,我怎么能像这样转动一个数组
array("item1"=>"object1", "item2"=>"object2",......."item-n"=>"object-n");
Run Code Online (Sandbox Code Playgroud)
到这样的字符串
item1='object1', item2='object2',.... item-n='object-n'
Run Code Online (Sandbox Code Playgroud)
我implode()已经考虑过了,但它并没有破坏它的关键.
如果预见到必要,是否有可能不嵌套foreach?
编辑:我改变了字符串
EDIT2/UPDATE: 很久以前就提出过这个问题了.那时,我想在一行中编写所有内容,因此我将使用三元运算符并嵌入内置函数调用以支持foreach.那不是一个好习惯!编写可读的代码,无论简洁与否都无关紧要.
在这种情况下:将foreach放在函数中将比编写单行更具可读性和模块性(即使所有答案都很棒!).
Perl join()忽略(跳过)空数组值; PHP implode()似乎没有.
假设我有一个数组:
$array = array('one', '', '', 'four', '', 'six');
implode('-', $array);
Run Code Online (Sandbox Code Playgroud)
收益率:
one---four--six
Run Code Online (Sandbox Code Playgroud)
而不是(恕我直言):
one-four-six
Run Code Online (Sandbox Code Playgroud)
有我正在寻找的行为的任何其他内置插件?或者它是一个定制的工作?
Python中的PHP内爆是否相当?我已经阅读并拆分了一组分隔的单词,现在我想以随机顺序对它们进行排序,然后用两个空格打印出来.
implode - 使用字符串连接数组元素
我是PHP的新手,我需要快速解决以下问题,但似乎无法想出一个:
我有一个像这样的多维数组
Array
(
[0] => Array
(
[blogTags_id] => 1
[tag_name] => google
[inserted_on] => 2013-05-22 09:51:34
[inserted_by] => 2
)
[1] => Array
(
[blogTags_id] => 2
[tag_name] => technology
[inserted_on] => 2013-05-22 09:51:34
[inserted_by] => 2
)
)
Run Code Online (Sandbox Code Playgroud)
我想使用implode()以某种方式返回一个包含键值的逗号分隔字符串,tag_name如此.
google, technology
Run Code Online (Sandbox Code Playgroud)
是否有可能通过上述功能实现这种效果?如果没有,请建议替代解决方案.
我正在寻找最优雅的方法将字符串向量内部转换为字符串.以下是我现在使用的解决方案:
static std::string& implode(const std::vector<std::string>& elems, char delim, std::string& s)
{
for (std::vector<std::string>::const_iterator ii = elems.begin(); ii != elems.end(); ++ii)
{
s += (*ii);
if ( ii + 1 != elems.end() ) {
s += delim;
}
}
return s;
}
static std::string implode(const std::vector<std::string>& elems, char delim)
{
std::string s;
return implode(elems, delim, s);
}
Run Code Online (Sandbox Code Playgroud)
那里还有其他人吗?
我有一个PHP数组,我想在前面添加一个减号( - ).我认为通过使用爆炸和内爆它是可能的,但我的PHP知识是不可能实际做到的.任何帮助,将不胜感激.
基本上我想从这个:
$array = [1, 2, 3, 4, 5];
Run Code Online (Sandbox Code Playgroud)
对此:
$array = [-1, -2, -3, -4, -5];
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
假设我有一个数组:
$elements = array('foo', 'bar', 'tar', 'dar');
Run Code Online (Sandbox Code Playgroud)
然后我想建立一个DELETE INSQL查询:
$SQL = "DELETE FROM elements
WHERE id IN ('" . implode(',', $elements) . "')";
Run Code Online (Sandbox Code Playgroud)
问题是element数组中的id不是单独引用的.IE查询看起来像:
$SQL = "DELETE FROM elements
WHERE id IN ('foo,bar,tar,dar');
Run Code Online (Sandbox Code Playgroud)
解决这个问题的最佳方式是什么?