根据数组索引创建字符串

3

我将尝试创建一个函数,可以完成以下操作: 有一个数组,其形式为

$array = [
    0 => 1,
    1 => 2,
    2 => 4,
];

我希望你能够帮我创建一个长度为5的字符串,其中包含当前数组的值以正确的顺序排列,例如:12040。
或者说:
$array = [
    0 => 3,
    1 => 5,
];

将变成:00305

本质上,将字符串中不存在于数组中的位置替换为0。

谢谢!


3
[1,2,4] 变成 1204[3,5] 变成 00305 的规律是什么?我看不出来它们背后的模式。 - Rizier123
混乱的......你想要实现什么? - messerbill
2
@Rizier123 看起来 0 代表该值不存在 - 即 [1,2,4] 丢失了 3,5,所以他们想要做成 [1,2,0,4,0] 或者 12040,以及 [0,0,3,0,5]/00305 因为 1,2,4 没有被设置。 - Sean
2个回答

3

您可能正在寻找类似下面这样的内容:

<?php
$input = [1,2,5,6,8];
$string = '';
for ($i=1; $i<=max($input); $i++) {
    $string .= in_array($i, $input) ? $i : '0';
}
var_dump($string);

输出结果为:
string(8) "12005608"

3
然而,这种假设是基于数组中最大的数字是字符串中的最后一个数字。然而,在问题中给出的第一个例子中,字符串还要“检查”数字5,但该数字在数组中不存在。 - ImClarky

2

我不确定我是否完全理解你的意思,但我认为你正在寻找这个:

$finalString = "";
for ($i = 0, $j = count($myArray); $i < $j; $i++)
{
    if (isset($myArray[$i]))
    {
        $finalString .= $myArray[$i];
    }
    else
    {
        $finalString .= "0";
    }
}

编辑:我意识到您可能正在寻找这个:

$myArray = [3, 5];
$finalString = "";
for ($i = 1; $i <= 5; $i++)
{
    if (in_array($i, $myArray))
    {
        $finalString .= $i;
    }
    else
    {
        $finalString .= "0";
    }
}

执行后,$finalString 中包含 00305。如果您想继续增加空格数量,请在循环中更改数字 5。


2
个人而言,我更喜欢在生产代码中使用arkascha的解决方案。我这样写是为了让OP清晰易懂。一个重要的区别:arkascha的解决方案永远不会创建比数组中最高值更长的字符串。因此,您将永远不会得到尾随的0。因此,对于输入[2],您将得到02,而不是02000 - Byson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接