• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Odstępy w długiej liczbie

VPS Starter Arubacloud
+1 głos
292 wizyt
pytanie zadane 16 maja 2018 w PHP przez jking Początkujący (350 p.)

Witam chciałbym się dowiedzieć w jaki najbardziej sensowny sposób wypisać za pomocą echo taką liczbę:

$liczba = 12345678901234567890123456;

w takim formacie

12 3456 7890 1234 5678 9012 3456

Próbowałem użyć funkcji number_format(), ale nie do końca mi to działa.

1 odpowiedź

+1 głos
odpowiedź 16 maja 2018 przez Chess Szeryf (76,710 p.)
wybrane 16 maja 2018 przez jking
 
Najlepsza
<?php
$number = '12345678901234567890123456';
echo chunk_split($number,4,' ');
?>

Do tego musisz napisać funkcję, która wydzieli dwie pierwsze liczby i następne podzieli, co cztery.

Edit:

<?php
function temp2($number,$divider){ 
 
	$temp = strlen($number);
	
	if(is_string($number) && is_int($divider) && $divider<=$temp && $divider>0){
	
		$arr3 = [];
		
		$length_number2 = $temp;
 
		for($i=0;$i<=$length_number2;$i++) {
		 
			$length_number2-=$divider;
			if($length_number2>=0){
				$arr3[] = $length_number2;
			}

		}
		
		foreach($arr3 as $value_arr3){

			if($value_arr3>0 && $value_arr3%$divider>=1){
				$result = $value_arr3;
			}else if($value_arr3>0 && $value_arr3%$divider==0){ 
				$result = $divider;
			}else {
				$result = $temp-$divider;
			}

		}

		$x = substr($number,$result,$temp);

		return trim(substr($number,0,$result).' '.chunk_split($x,$divider,' '));
	}else{
		return '$number must be a string and $divider must be a integer greater than zero and less than length $number';
	}
}
echo temp2('12345678901234567890123456',10);
// 123456 7890123456 7890123456
?>

Testy:

<?php
echo temp2('12345678901234567890123456',20);
// 123456 78901234567890123456
echo temp2('12345678901234567890123456',4);
// 12 3456 7890 1234 5678 9012 3456
echo temp2('12345678901234567890123456',13);
// 1234567890123 4567890123456
echo temp2('12345678901234567890123456',30);
// $number must be a string and $divider must be a integer greater than zero and less than length $number
echo temp2('12345678901234567890123456',1);
// 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
echo temp2('12345678901234567890123456',26);
// 12345678901234567890123456
echo temp2('12345678901234567890123456',-26);
// $number must be a string and $divider must be a integer greater than zero and less than length $number
echo temp2(12345678901234567890123456,7);
// $number must be a string and $divider must be a integer greater than zero and less than length $number
echo temp2("12345678901234567890123456",7);
// 12345 6789012 3456789 0123456
?>

 

komentarz 16 maja 2018 przez jking Początkujący (350 p.)

Dzięki za funkcję chunk_split(). Zrobiłem to w ten sposób i działa, lecz nie jestem co do tego przekonany:

<?php

  $dwiepierwsze = $accountNumber[0] . $accountNumber[1];


    $test = null;
    for ($i = 2; $i < 26; $i++) {
      $test = $test . $accountNumber[$i];
    }
    echo $dwiepierwsze . ' ' . chunk_split($test, 4, ' ');

?>

Możesz podpowiedzieć jak zrobić to lepiej?

Podobne pytania

0 głosów
2 odpowiedzi 171 wizyt
pytanie zadane 30 listopada 2023 w C i C++ przez maxkolanko1998 Gaduła (3,230 p.)
0 głosów
2 odpowiedzi 5,559 wizyt
pytanie zadane 2 sierpnia 2018 w C i C++ przez Nowacx02 Obywatel (1,060 p.)
0 głosów
2 odpowiedzi 468 wizyt
pytanie zadane 17 września 2015 w C i C++ przez Przemko9856 Początkujący (360 p.)

92,832 zapytań

141,776 odpowiedzi

320,824 komentarzy

62,163 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...