Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] string -> array
Forum PHP.pl > Forum > PHP
lunter
Jak najszybciej i najprosciej ze stringa stworzyc tablice elementow jedno-bajtowych questionmark.gif

Przyklad:
$s='abcdefgh'; -> $a=array('a','b','c','d','e','f','g','h');


Probowalem tak jak w JS ( a=s.split('') ), czyli $a=explode('',$s). Niestety cos mi nie chce dzialac.

Czy da sie to zrobic bez uzywania 'for'/'while' questionmark.gif
dr_bonzo
array_split
NuLL
dr_bonzo - takowej funckji nie ma tongue.gif Chyba raczej str_split" title="Zobacz w manualu PHP" target="_manual
bendi
Voila winksmiley.jpg
  1. <?
  2. $s='abcdefgh';
  3. for( $i=0; $i<strlen($s); $i++ )echo $s[$i].'<br>';
  4. ?>

A str_split" title="Zobacz w manualu PHP" target="_manual jest dostępne dopiero w php 5
dr_bonzo
Null: tak, po prostu:
- otworzylem manuala
- szukaj: string; F3, ENTER
- szukaj: array, F3 => znalazlo str_split
i z rozpedu wpisalem array zamiast str smile.gif
oczywiscie przebieglo to ze 3 razy szybciej tongue.gif
--------------
a to w ramach kanpani propagandowej na rzecz upowszechnienia php5:
Cytat
A str_split jest dostępne dopiero w php 5

-->
str_split jest niedostepne w starej wersji php (4 i nizej)
smile.gif
nospor
w manualu jest:
  1. <?php
  2.  
  3. $s = 'abcde';
  4. $tab = preg_split('//', $s, -1, PREG_SPLIT_NO_EMPTY);
  5.  
  6. ?>
Liko
Można też z PHP_Compact:
  1. <?php
  2. /**
  3.  * Replace str_split()
  4.  *
  5.  * @category php
  6.  * @package  PHP_Compat
  7.  * @link http://php.net/function.str_split
  8.  * @author Aidan Lister <aidan@php.net>
  9.  * @version  $Revision: 1.14 $
  10.  * @since  php 5
  11.  * @require  php 4.0.0 (user_error)
  12.  */
  13. if (!function_exists('str_split')) {
  14. function str_split($string, $split_length = 1)
  15. {
  16. if (!is_scalar($split_length)) {
  17. user_error('str_split() expects parameter 2 to be long, ' .
  18. gettype($split_length) . ' given', E_USER_WARNING);
  19. return false;
  20. }
  21.  
  22. $split_length = (int) $split_length;
  23. if ($split_length < 1) {
  24. user_error('str_split() The length of each segment must be greater than zero', E_USER_WARNING);
  25. return false;
  26. }
  27.  
  28. preg_match_all('/.{1,' . $split_length . '}/s', $string, $matches);
  29. return $matches[0];
  30. }
  31. }
  32. ?>
kszychu
Ależ kombinujecie...... Przecież, tak jak napisał bendi, stringa można traktować jak tablicę i odwoływać się do jego kolejnych elementów jak do elementów tablicy.
cube
Mam nadzieje że poniższy artykuł ma sie tak do php jak do C++
http://www.cprogramming.com/tips/showTip.p...count=30&page=0 [ odnośnie posta bendi ]
kszychu
  1. <?php
  2. $s='abcdefgh';
  3. for( $i=0, $max = strlen($s); $i<$max; $i++ )echo $s[$i].'<br>';
  4. ?>


Prosta modyfikacja przykładu zaprezentowanego przez bendi. Nie zmienia to jednak faktu, że odpowiedź na pytanie zawarte w temacie pozostaje niezmienna.
tiraeth
Tak jak mówią niektórzy, do stringa można odwoływać się jak do tablicy smile.gif

  1. <?php
  2. $zmienna = 'abcdefghijklmnopqrstuvwxyz';
  3.  
  4. while($i < strlen($zmienna))
  5. {
  6.  $arr[] = $zmienna[$i];
  7.  $i++;
  8. }
  9.  
  10. print_r($arr);
  11. ?>


Czyli EOT, ajt?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.