Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [solved][php]zamiana wartosci elementow tabilicy
Forum PHP.pl > Forum > Przedszkole
sir_skiner
witajcie.
powiedzcie mi w czym tkwi moja glupota. mam podwojna tablice asocjacyjna a w niej klucze ze stringami w postaci urli => "http://foo.boo.pl". o tak:
  1. <?php
  2. $tab=array('moo'=>array('shmoo'=>'zoo', 'url'=>'http://foo.boo.pl'...), ...)
  3. ?>

chce zamienic konkretne wartosci na inne, ale dupa jestem. niezaleznie czy wywoluje elementy;
  1. <?php
  2. foreach ($tab as $k => $v){
  3. //czy przez 
  4. str_replace($staryurl, $nowyurl, $v[url]);
  5. // czy przez ifa
  6. if ($v[url]==$staryurl)
  7. {
  8. $v[url]=$nowyurl;
  9. }
  10. }
  11. ?>

nic sie nie dzieje...
jak to poprawnie zrobic?
Kicok
Zmienia się tablica $v. Natomiast ty najprawdopodobniej zaraz za tą pętlą korzystasz z $tab, której w pętli nie tykałeś ;]

  1. <?php
  2.  
  3. foreach( $tab as $k => $v ) {
  4. $tab[$k]['url'] = str_replace( $staryurl, $nowyurl, $v['url'] );
  5. }
  6.  
  7. ?>
sir_skiner
albom zupelnie tepy i zle to implementuje, albo problem tkwi gdzie indziej... tylko nie wiem gdzie.

ja nieco uproscilem, nie sadzilem by to cos zmienialo, moze nie slusznie, wiec doprecyzuje, ze $tab jest tablica zagniezdzona:

  1. <?php
  2. $tab0 = array( $tab01 => array( 'foo'=>'shmoo01', ..., 'tab'=> array( ... ) )
  3.  ...
  4. $tab_n => array( 'foo'=>'shmoo_n', ..., 'tab'=> array( ... ) ) )
  5. ?>


tak, ze wywoluje ja w zagniezdzonym foreach:
  1. <?php
  2. foreach ($tab0 as $k0 => $v0)
  3. { 
  4. //kod iteracji
  5.  foreach ($v0['tab'] as $k => $v)
  6. {
  7. $v0['tab'][$k]['url'] = str_replace( $staryurl, $nowyurl, $v['url'] );
  8. //inny kod
  9.  }
  10. }
  11. ?>


biggrin.gif sory ze tak mace, ale czy to cos zmienia?
Kicok
  1. <?php
  2.  
  3. $tablica = array(
  4. 'klucz1' => array( 'pod_klucz1' => 'aaa', 'pod_klucz2' => 'aaa' ),
  5. 'klucz2' => array( 'pod_klucz1' => 'aaa', 'pod_klucz2' => 'aaa' )
  6. );
  7.  
  8.  
  9. foreach( $tablica as $key => $value )
  10. {
  11. // Zmieniasz wartość zmiennej: $value
  12. $value['pod_klucz1'] = 'bbb';
  13. }
  14.  
  15. // Wyświetlasz wartość zmiennej: $tablica
  16. echo '<pre>' . print_r( $tablica, true ) . '</pre>';
  17.  
  18. ?>

  1. <?php
  2.  
  3. $tablica = array(
  4. 'klucz1' => array( 'pod_klucz1' => 'aaa', 'pod_klucz2' => 'aaa' ),
  5. 'klucz2' => array( 'pod_klucz1' => 'aaa', 'pod_klucz2' => 'aaa' )
  6. );
  7.  
  8.  
  9. foreach( $tablica as $key => $value )
  10. {
  11. // Zmieniasz wartość zmiennej: $tablica
  12. $tablica[$key]['pod_klucz1'] = 'bbb';
  13. }
  14.  
  15. // Wyświetlasz wartość zmiennej: $tablica
  16. echo '<pre>' . print_r( $tablica, true ) . '</pre>';
  17.  
  18. ?>



Znajdź 10 różnic między tymi kodami tongue.gif
sir_skiner
widze tylko roznice w wywoloniu podkluczy petla foreach... w sumie to dziwne dla mnie, ze $value i $tablica[$key] nie sa tozsame, ale swiadom ulomnosci swego umyslu przyjmmuje to as is. sek w tym, ze o ile:
  1. <?php$tab[$k]['pod_klucz']='bbb';?>
dziala, o tyle:
  1. <?php$tab[$k]['pod_klucz']=str_replace($cos, $cos_innego, $v['pod_klucz'];?>
ani nawet:
  1. <?php$tab[$k]['pod_klucz']=str_replace($cos, $cos_innego, $tab[$k]['pod_klucz'];?>
nie dziala;/

dobra, strazny wstyd, ale sobie zasluzylem i obnaze sie publicznie.str_replace mi nie zamienial nic, bo mu podalem zle parametry....dzieki za pomoc i sorki za trucie, ale sie dopiero ucze :roll2:
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.