Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]spłaszczenie zagnieżdżonych tablic php 5.3.0, jak zrobić to najkrócej ?
madrazel
post 12.08.2009, 16:27:36
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 21.08.2008

Ostrzeżenie: (0%)
-----


udało mi się znaleźć takie 2 skrypty:
Kod
<code><span class="html"><span class="default">  </span><span class="keyword">function </span><span class="default">array_flatten</span><span class="keyword">(</span><span class="default">$a</span><span class="keyword">) {
        foreach(</span><span class="default">$a </span><span class="keyword">as </span><span class="default">$k</span><span class="keyword">=></span><span class="default">$v</span><span class="keyword">) </span><span class="default">$a</span><span class="keyword">[</span><span class="default">$k</span><span class="keyword">]=(array)</span><span class="default">$v</span><span class="keyword">;
        return </span><span class="default">call_user_func_array</span><span class="keyword">(</span><span class="default">array_merge</span><span class="keyword">,</span><span class="default">$a</span><span class="keyword">);
      }</span></span></code>


Kod
<span class="ident">function</span> <span class="ident">flatten_array</span><span class="punct">(</span><span class="ident">array</span> <span class="global">$a</span><span class="punct">)</span> <span class="punct">{</span>
      <span class="global">$i</span> <span class="punct">=</span> <span class="number">0</span><span class="punct">;</span>
      <span class="keyword">while</span> <span class="punct">(</span><span class="global">$i</span> <span class="punct"><</span> <span class="ident">count</span><span class="punct">(</span><span class="global">$a</span><span class="punct">))</span> <span class="punct">{</span>
          <span class="keyword">if</span> <span class="punct">(</span><span class="ident">is_array</span><span class="punct">(</span><span class="global">$a</span><span class="punct">[</span><span class="global">$i</span><span class="punct">]))</span> <span class="punct">{</span>
              <span class="ident">array_splice</span><span class="punct">(</span><span class="global">$a</span><span class="punct">,</span> <span class="global">$i</span><span class="punct">,</span> <span class="number">1</span><span class="punct">,</span> <span class="global">$a</span><span class="punct">[</span><span class="global">$i</span><span class="punct">]);</span>
          <span class="punct">}</span> <span class="keyword">else</span> <span class="punct">{</span>
              <span class="global">$i</span><span class="punct">++;</span>
          <span class="punct">}</span>
      <span class="punct">}</span>
      <span class="keyword">return</span> <span class="global">$a</span><span class="punct">;</span>
  <span class="punct">}</span>

ale to są stare wpisy sprzed ponad roku, może jest w najnowszej wersji php jakaś jednolinijkowa funcja na to ?

o rany boskie a cóż to się stało że mi się kody nie chciały wkleić ?

Ten post edytował madrazel 12.08.2009, 16:28:24
Go to the top of the page
+Quote Post
Fifi209
post 12.08.2009, 16:30:44
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Z tego co podałeś jest cokolwiek trudno wyczytać. Tak więc opisz może swój problem?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
madrazel
post 12.08.2009, 16:40:55
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 21.08.2008

Ostrzeżenie: (0%)
-----


ja tego tak nie wkleiłem, zostawiłem to tak jak jest bo wygląda mi to na jakiś błąd z forum

a problem jest taki że mam tablicę np. taką:

Kod
Array
(
    [0] => jeden
    [1] => dwa
    [2] => Array
        (
            [0] => trzy
            [1] => cztery
            [2] => Array
                (
                    [0] => piec
                    [1] => szesc
                )

        )

)


a chcę aby było tak:

Kod
Array
(
    [0] => jeden
    [1] => dwa
    [2] => trzy
    [3] => cztery
    [4] => piec
    [5] => szesc
)
Go to the top of the page
+Quote Post
erix
post 12.08.2009, 16:43:37
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




http://pl2.php.net/manual/en/class.recursi...rator.php#87757


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Fifi209
post 12.08.2009, 16:44:12
Post #5





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Nie wiem czy jest gotowa funkcja ew. możesz napisać swoją.
Użyć do tego is_array i sprawdzać.

  1. <?php
  2.  
  3. $a = array('jeden', 'dwa', array('trzy', 'cztery', array('piec')));
  4.  
  5. $n = array();
  6.  
  7. function testowa($x) {
  8. global $n;
  9. foreach ($x as $value) {
  10. if (!is_array($value)) {
  11. $n[] = $value;
  12. }else{
  13. testowa($value);
  14. }
  15. }
  16. }
  17.  
  18. testowa($a);
  19.  
  20. echo '<pre>';
  21. print_r($n);
  22. echo '</pre>';
  23.  
  24. ?>


Ten post edytował fifi209 12.08.2009, 16:53:49


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
madrazel
post 12.08.2009, 16:50:31
Post #6





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 21.08.2008

Ostrzeżenie: (0%)
-----


wbrew pozorom to jest przydatne, można np. napisać funkcję która potrzebuje jakieś tam parametry, niech to będą np. ścieżki dostępu do plików - tak aby ta funkcja nie głupiała jeśli np. dostanie pojedyńczy parametr jako string, czy kombinację stringów i tablic, zdziwiony jestem że nie zrobili z tego jednolinijkowca w 5.3.0
Go to the top of the page
+Quote Post
erix
post 12.08.2009, 19:11:55
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Nie wiem czy jest gotowa funkcja ew. możesz napisać swoją.

Dałem linka do czegoś takiego, bez paskudnych globali. tongue.gif

Cytat
niech to będą np. ścieżki dostępu do plików - tak aby ta funkcja nie głupiała jeśli np. dostanie pojedyńczy parametr jako string, czy kombinację stringów i tablic, zdziwiony jestem że nie zrobili z tego jednolinijkowca w 5.3.0

Do takich rzeczy jest RecursiveIteratorIterator z SPL, więc nie mów, że nie ma. tongue.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Fifi209
post 12.08.2009, 19:53:56
Post #8





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Erix warto zwrócić uwagę, że posty napisaliśmy w tej samej minucie.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.06.2025 - 00:03