Я хочу получить 1-3 значения массива, но включить '.' каждый раскол.
Пример есть текст no.this.is.just.example
Я хочу взять только индекс 0-2, поэтому $ merge будет no.this.is
Я пытался
$cut = 3;
$text = explode('.',"no.this.is.just.example");
for($i=0; $i<$cut;$i++){
if ($cut-1==$i){
$merge .= $text[$i];
}
else{
$merge .= $text[$i].'.';
}
}
Есть ли самый простой способ сделать это?
Или просто preg_match('~^[^.]*(?:\.[^.]*){3}~', $s, $match) (результат будет $match[0]). Или регулярное выражение может быть даже ^(?:\.?[^.]*){4} (см. демонстрация).






Вы можете полностью избежать цикла, используя комбинацию array_slice и взорваться.
$cut = 3;
$text = explode('.', 'no.this.is.just.example');
echo implode('.', array_slice($text, 0, $cut));
// outputs no.this.is
в параметре array_slice $ cut не нужно -1? я имею в виду echo implode ('.', array_slice ($ text, 0, $ cut-1)) ;. потому что индекс начинается с 0
Нет, из документы третий параметр определяет длину последовательности.
Другой вариант - передать $cut в качестве третьего параметра для разнесения doc. Возвращенный массив будет содержать максимальное количество элементов limit, последний элемент будет содержать остальную часть строки., так что добавьте 1 к пределу.
Затем используйте array_slice doc, чтобы получить нужную деталь.
$cut = 3;
$text = explode('.',"no.this.is.just.example", $cut + 1);
echo implode('.', array_slice($text, 0, $cut));
Результат
no.this.is
Циклы while - это самый простой тип цикла в PHP. Они ведут себя так же, как их коллеги C.
$cut = 3;
$text = explode('.',"no.this.is.just.example");
while($cut > 0) {
$merge .= $text[$i].'.';
$cut--;
}
Вы имеете в виду передачу 3 как последний параметр для взрыва?
$text = explode('.',"no.this.is.just.example", $cut);