如何修改数组中的每个第 n 项? [关闭]
Posted
技术标签:
【中文标题】如何修改数组中的每个第 n 项? [关闭]【英文标题】:How to modify every nth item in an array? [closed] 【发布时间】:2012-01-27 03:57:18 【问题描述】:我正在尝试找到最有效的方法来获取数组中的每五个项目,然后使用 str_replace 对其进行修改。
例如将 [3r] 修改为 [4r] 仅每第五项。
$myArray = array("apples[3r]", "jacobs[3r]", "chocolate[3r]", "makeup[3r]", "lipstick[3r]", "triangle[3r]", “jacobson[3r]”、“lacksasf[3r]”、“dahe[3r]”、“applestoapples[3r]”、“coaxale[3r]”、“hamburger[3r]”、“prefix[3r]”
然后输出
apples[3r] jacobs[3r] 巧克力[3r] 化妆品[3r] 口红[4r] 三角形[3r] jacobson[3r] 缺少sasf[3r] dahe[3r] applestoapples[4r] coaxale[3r] 汉堡包[3r ] 前缀[3r]
【问题讨论】:
无需将标签添加到标题的开头。这不是 90 年代的留言板。请查看投票率高的现有问题以获得灵感。 【参考方案1】:只需遍历您的数组,但只更改每个 fith 项:
$i = 0;
foreach ($myArray as &$value)
if ($i++ % 5) continue;
$value = str_replace(/* lookup the manual if you don't know this function */);
unset($value);
如果您不想从0
开始计数,请将$i
初始化为-4
。
【讨论】:
【参考方案2】:这将执行此更改:
$myArray = array(
"apples[3r]",
"jacobs[3r]",
"chocolate[3r]",
"makeup[3r]",
"lipstick[3r]",
"triangle[3r]",
"jacobson[3r]",
"lacksasf[3r]",
"dahe[3r]",
"applestoapples[3r]",
"coaxale[3r]",
"hamburger[3r]",
"prefix[3r]"
);
$sizeMyArray = count($myArray);
for ($i = 4; $i < $sizeMyArray; $i+= 5)
$myArray[$i] = str_replace('[3r]', '[4r]', $myArray[$i]);
print_r($myArray);
/* Array (
* [0] => apples[3r]
* [1] => jacobs[3r]
* [2] => chocolate[3r]
* [3] => makeup[3r]
* [4] => lipstick[4r]
* [5] => triangle[3r]
* [6] => jacobson[3r]
* [7] => lacksasf[3r]
* [8] => dahe[3r]
* [9] => applestoapples[4r]
* [10] => coaxale[3r]
* [11] => hamburger[3r]
* [12] => prefix[3r] ) */
【讨论】:
【参考方案3】:$myArray = array("apples[3r]", "jacobs[3r]", "chocolate[3r]", "makeup[3r]", "lipstick[3r]", "triangle[3r]", "jacobson[3r]", "lacksasf[3r]","dahe[3r]", "applestoapples[3r]", "coaxale[3r]", "hamburger[3r]", "prefix[3r]");
$len = count($myArray);
$total = floor($len/5);
$count = 5;
for($i=0, $i<= $total, $i++)
$myArray[$count] = str_replace("[3r]", "[4r]", $myArray[$count]);
$count += 5;
【讨论】:
【参考方案4】:for( $i=0;$i<count( $array );$i+=<N-1> )
...
使用for循环,每次加N-1
【讨论】:
【参考方案5】:使用“for”从 4(数组的第 5 个元素)开始,每一步增加 5:
for ($i = 4; $i < count($myArray); $i += 5)
$myArray[$i] = str_replace('[3r]', '[4r]', $myArray[$i]);
编辑:我忘记再次将结果分配给数组。
【讨论】:
+1 - 我认为最优雅的解决方案。【参考方案6】:for ($i = 0; $i*5+4 < sizeof($myArray); $i++)
$myArray[$i*5+4] = str_replace("[3r]","[4r]", $myArray[$i*5+4]);
【讨论】:
以上是关于如何修改数组中的每个第 n 项? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章