我是一个相对较新的PHP,我一直在努力让这个工作.我有一个多个数组,并希望以特定格式和组中回显每个数组.所以我经历了stackoverflow并找到了这个帮助:
<? foreach(array_chunk($projetos, 6) as $curta ) { ?>
<li style='display:block'>
<div class="film"> <?php echo $curta[0]['titulo']; ?></div>
<div class="film"> <?php echo $curta[1]['titulo']; ?></div>
<div class="film"> <?php echo $curta[2]['titulo']; ?></div>
<div class="film"> <?php echo $curta[3]['titulo']; ?></div>
<div class="film"> <?php echo $curta[4]['titulo']; ?></div>
<div class="film"> <?php echo $curta[5]['titulo']; ?></div>
</li>
<? }; ?>
Run Code Online (Sandbox Code Playgroud)
这会返回我想要的但是数组的最后几项不会填充到6并且创建2个额外的空div并且弄乱了设计.
这是我拥有的数组的一个例子:
<?php
$projetos = array (
"ugm" => array (
"id" => "ugm",
"titulo" => "Una Guerra Más",
"video" => "imagem",
"videoid" => "",
"height" => "$video_height_wide",
"sinopse" …Run Code Online (Sandbox Code Playgroud) 我需要在数据库中存储大量的二维数组,并且不确定要使用什么:serialize或者implode.所以我做了一些测试,找出哪一个工作得更快,并得出结论serialize:
Execution times: 1'000'000
Serialize: 1.4974119663239 seconds
Implode: 2.5333571434021 seconds
Explode: 4.0185871124268 seconds
Unserialize: 1.6835169792175 seconds
Run Code Online (Sandbox Code Playgroud)
所以问题是:为什么内爆+爆炸比串行化+反序列化要慢得多?
PS:我已经发现了这个问题,但这并不是我要问的问题.
我试图\n在我的foreach声明中添加一个换行符.
我的代码:
$ga->requestReportData($profileId,array('country'),array('visits'));
$array = array();
foreach($ga->getResults() as $result){
$array[] = "['".$result->getcountry()."', ".$result->getVisits()."]";
}
echo implode(",\n", $array);
Run Code Online (Sandbox Code Playgroud)
我的结果之间只有逗号和空格.我想要一个逗号和换行符.
我想要得到这样的东西:
['国家','数字'],
['国家','数字'],
['国家','号码']
但是我得到这个:
['Country','number'],['Country','number'],['Country','number']
为什么我的\n不会引起换行?
我想在使用制表符进行内爆之前从array_values()内部的值中删除标记.
我试过下面的这一行,但是我有一个错误,
$output = implode("\t",strip_tags(array_keys($item)));
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想剥离换行符,双倍空格,值的标签,
$output = implode("\t",preg_replace(array("/\t/", "/\s{2,}/", "/\n/"), array("", " ", " "), strip_tags(array_keys($item))));
Run Code Online (Sandbox Code Playgroud)
但我认为我的方法不正确!
这是整个功能,
function process_data($items){
# set the variable
$output = null;
# check if the data is an items and is not empty
if (is_array($items) && !empty($items))
{
# start the row at 0
$row = 0;
# loop the items
foreach($items as $item)
{
if (is_array($item) && !empty($item))
{
if ($row == 0)
{
# write the column headers
$output = implode("\t",array_keys($item)); …Run Code Online (Sandbox Code Playgroud) 我现在有这个:
$_words = "'".implode("','", $array_of_words)."'";
Run Code Online (Sandbox Code Playgroud)
这给了我一个字符串:
'word','word2','word3'
Run Code Online (Sandbox Code Playgroud)
如何修改才能获得
"word","word2","word3"
Run Code Online (Sandbox Code Playgroud)
谢谢
我试图破坏其键和值的数组.我可以很容易地获得内爆的钥匙,但发现我必须重复自己的钥匙.
目前我这样做:
$values = array(
'id' => $sel['id'],
'creator_id' => $sel['creator_id'],
'campaign_id' => $sel['campaign_id'],
'save_results' => $sel['save_results'],
'send_results_url' => $sel['send_results_url'],
'reply_txt' => $sel['reply_txt'],
'allow_multiple_votes' => $sel['allow_multiple_votes']
);
$cols = '';
$vals = '';
$first = true;
foreach($values as $col => $val) {
if(!$first) {
$cols .= ', ';
$vals .= ', ';
}
$cols .= $col;
$vals .= $val;
$first = false;
}
Run Code Online (Sandbox Code Playgroud)
困扰我的部分是这样的:
foreach($values as $col => $val) {
if(!$first) {
$cols .= ', ';
$vals .= ', '; …Run Code Online (Sandbox Code Playgroud) 我在使用ArrayIterator时遇到了一些问题(实际上,与ArrayObject相同的问题).
对于99%的所有内容,我的扩展ArrayIterator表现得像一个阵列,并且运行良好.
不幸的是,implode()不喜欢被赋予ArrayIterator(或ArrayObject).
我无法在文档中找到任何建议通过扩展ArrayIterator实现任何其他类的文档,也没有任何其他方法可以覆盖.
任何人都可以建议如何使这个工作?(注意:每次使用implode时都要转换为数组不是解决方案,因为我希望这个类似数组的对象能够完全作为一个数组工作,并且不需要使用它来代码知道/关心/强制转换)
我有一个包含30k项目的数组,而implode什么都不返回.没有错误信息,没有内存问题,什么都没有.
如果我使用array_slice并将数组切片为100个项目,它可以正常工作.它也适用于7k阵列,但不适用于此阵列.
但是,在另一个主题中我找到了这个代码,它运行得很好:
$arr = array();
for ($i = 0; $i < 50000; $i++) {
$arr[] = str_shuffle('This sentance is of average length, which The Internet says is aboout 14.2 words.');
}
echo implode(PHP_EOL, $arr);
Run Code Online (Sandbox Code Playgroud)
但是使用PHP_EOL我不能在我的选择中使用它,字符串需要用','分隔.
所以我有两个问题:是否有任何方法可以使这项工作,我怎么能抓住这个错误?因为测试implode输出不起作用,is_null,strlen,is_string,empty,isset,所有这些测试都失败了.
使用此代码
<?php
foreach (glob("*.txt") as $filename) {
$file = $filename;
$contents = file($file);
$string = implode($contents);
echo $string;
echo "<br></br>";
}
?>
Run Code Online (Sandbox Code Playgroud)
我可以显示文件夹中任何txt文件的内容,问题是所有格式化等等,从txt文件跳过
txt文件看起来像
#nipponsei @ irc.rizon.net presents:
Title: Ah My Goddess Sorezore no Tsubasa Original Soundrack
Street Release Date: July 28, 2006
------------------------------------
Tracklist:
1. Shiawase no Iro On Air Ver
2. Peorth
3. Anata ni Sachiare
4. Trouble Chase
5. Morisato Ka no Nichijou
6. Flying Broom
7. Megami no Pride
8. Panic Station
9. Akuryou Harai
10. …Run Code Online (Sandbox Code Playgroud) 我到处搜索,但找不到适合我的解决方案.
我有以下内容:
$bedroom_array = array($studio, $one_bed, $two_bed, $three_bed, $four_bed);
Run Code Online (Sandbox Code Playgroud)
对于这个例子,我们说:
$studio = '1';
$one_bed = '3';
$two_bed = '3';
Run Code Online (Sandbox Code Playgroud)
然后我使用implode函数在所有值之间添加逗号:
$bedroom_list = implode(", ", array_filter($bedroom_array));
echo $bedroom_list;
Run Code Online (Sandbox Code Playgroud)
然后输出:
1,2,3
我想要做的是找到字符串中的最后一个逗号并用&替换它,所以它会读取:
1,2和3
字符串不会总是这么长,可以更短或更长,例如1,2,3,4等等.我已经研究过使用substr但是我不确定这是否适用于我需要的东西?
implode ×10
php ×10
arrays ×4
array-filter ×1
explode ×1
foreach ×1
limit ×1
performance ×1
preg-replace ×1
strip-tags ×1
substr ×1
text-files ×1