-1

PHP では、配列に文字列が存在するかどうかを確認する必要があります。存在する場合は、その値に「-1」を追加する必要があります。「string-1」が再び存在する場合は、「string-N」が一意になるまで「string-2」にする必要があります。

$string = 'string';
If $string exists in $array, $string = 'string-1'
If $string exists again in $array, $string = 'string-2'
If $string exists again in $array, $string = 'string-3'
etc
4

4 に答える 4

2
$filearray = //blah blah ... (you need to have this array filled before)
$filename = "string";
if (in_array($filename,$filearray))
{
    $i = 1;
    while (in_array($filename.'-'.$i,$filearray))
    {
        i++;
    }
    $filename = $filename.'-'.$i;
}
echo $filename;
于 2013-02-01T08:41:08.767 に答える
1

これはうまくいくはずです:

$array = array("this", "is", "my", "string", "and", "it", "is", "a", "string");
$string = "string";

$i = 1;
foreach ($array as &$value) {
    if ($value == $string) {
        $value = $string . "-" . ($i++);
    }
}
unset($value);

出力:

Array
(
    [0] => this
    [1] => is
    [2] => my
    [3] => string-1
    [4] => and
    [5] => it
    [6] => is
    [7] => a
    [8] => string-2
)
于 2013-02-01T08:38:17.403 に答える
1

while ループの完璧な使用例:

$tmp = $string;
$i = 1;
while(in_array($tmp, $array)) {
    $tmp = $string . '-' . $i;
    ++$i;
}
$string = $tmp;

例:

$string = 'test';
$array = ['foo', 'bar', 'test', 'test-1'];

出力:

test-2
于 2013-02-01T08:39:06.890 に答える
0

複数のオカレンスがある場合、配列内のすべての文字列の後に -1、-2... を追加する必要があると思います。このコードを確認してください:

<?php

$array = array("this", "is", "my", "string", "and", "it", "is", "a", "string", "do", "you", "like", "my", "string");
$ocurrences = array();

$iterator = new ArrayIterator($array);

while ($iterator->valid()) {
    $keys = array_keys($ocurrences);
    if (in_array($iterator->current(), $keys)) {
        $array[$iterator->key()] = $iterator->current() . '-' . $ocurrences[$iterator->current()];
        $ocurrences[$iterator->current()]++;
    }
    else {
        $ocurrences[$iterator->current()] = 1;
    }
    $iterator->next();
}

print_r($array);

それは印刷されます:

Array
(
    [0] => this
    [1] => is
    [2] => my
    [3] => string
    [4] => and
    [5] => it
    [6] => is-1
    [7] => a
    [8] => string-1
    [9] => do
    [10] => you
    [11] => like
    [12] => my-1
    [13] => string-2
)
于 2013-02-01T09:09:31.123 に答える