Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]spłaszczenie zagnieżdżonych tablic php 5.3.0, jak zrobić to najkrócej ?
madrazel
post
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
 
Start new topic
Odpowiedzi
Fifi209
post
Post #2





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
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 17:53