Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Podmiana arraów
Forum PHP.pl > Forum > PHP
Cinamicom
Witam. Mam taki kodzik:

  1. $array1 = array('1' => 1, '2' => 2);
  2. $array2 = array('1' => 'bla', '2' => 'dsad');


Chcę podmienić wartość kluczy z array1 na wartości z array2. Czyli po podmianie w array1 powinno być tak 1 = bla, 2 = dsad

Jak mogę to zrobić?

Dziękuje.

Mam taki kod, ale on mi zamienia na ostatni row z array2 - DataHash
  1. $code = $_POST['code'];
  2. $codeSplit = str_split($code);
  3. $getCode = null;
  4. foreach($codeSplit as $row => $key)
  5. {
  6. foreach($this->DataHash as $row2 => $key2)
  7. {
  8. $getCode = str_replace($key, $key2, $code);
  9. }
  10. }
nospor
A wystarczylo zajrzec do manuala....
http://pl1.php.net/manual/en/function.array-combine.php
Cinamicom
Chyba mnie nie zrozumiałeś.

array('nazwa' => 'heh', 'nazwa2' => 'heh2');

Drugi array ma takie same rzeczy (nazwa, nazwa2) ale wartości ma wziaść sobie od tego arraya wyżej.

Może napiszę jak chce to wykorzystać.

Mam jedną baze array, tam mam wszystkie litery a do nich przypisane jakieś losowe znaki np. array('a' => 'dsada', 'b' => 'dasd42');

Mam drugą bazę array ze znakami. Chcę tę znaki podmienić na odpowiedników. Czyli np. podaję 'a' i zamienia na 'dsada'
nospor
No i to wlasnie robi array_combine()
Cinamicom
Mógłbyś dać mi przykład? bo nie rozumiem. Mam taki błąd: Warning: array_combine(): Both parameters should have an equal number of elements in

$getCode = array_combine($codeSplit, $this->DataHash);

Pierwszy array:
  1. (
  2. [0] => e
  3. [1] => d
  4. [2] => s
  5. [3] => a
  6. [4] => d
  7. [5] => a
  8. [6] => s
  9. )
  10. 1

A tutaj część drugiego. Nie daję całego bo dużo miejsca zajmie.
  1. (
  2. [q] => s
  3. [w] => a
  4. [e] => ddd
  5. [r] => dd
  6. [t] => dd
  7. [y] => dd
  8. [u] => dd
  9. [i] => dd
  10. [o] => dd
  11. [p] => dd
  12. )
nospor
No przeciez masz wyraznie napisane: obie tabele muszą miec taka sama liczbe elementow.
Cinamicom
Wiem, ale ta liczba elementów jest zależna od ilości wpisanych znaków.
com
no to w taki sam sposób musisz ograniczyć te drugą tablice..

wyjmij sobie wartości z tablicy
http://pl1.php.net/manual/en/function.array-values.php

potem wyszukaj odpowiednie klucze w drugiej
http://pl1.php.net/manual/en/function.array-keys.php

i użyj tego co zaproponował nospor wink.gif
Pyton_000
to już szybciej array_intersect_key i wtedy combine
com
Pyton_000 owszem ale wtedy w obu musiały by być kluczami a tu w 1 są wartościami a w drugim kluczami smile.gif
nospor
Trzeba bylo od razu mowic ze masz rozna liczbe elementow...

  1. $array1 = array('1' => 1, '2' => 2);
  2. $array2 = array('1' => 'bla', '2' => 'dsad','3'=>'blblbl');
  3. foreach ($array1 as $k => $v){
  4. if (isset($array2[$k])) $array1[$k] = $array2[$k];
  5. }

i juz
Cinamicom
  1. foreach ($codeSplit as $k => $v)
  2. {
  3. if (isset($this->DataHash[$k])) $codeSplit[$k] = $this->DataHash[$k];
  4. echo $codeSplit[$k];
  5. }

Zamienia mi na wartość liczby 0 - ""0" => 'mfdsf ',"
nospor
NIe bardzo rozumiem co teraz napisales..... jakis problem?
Cinamicom
No nie działa. Powinno mi zamienić na odpowiednio do podanej litery. Dajmy no to że wpisuję literę "q" a ona ma wartość "dudek".

Mi zamienia na 0. Czyli jakby pętla zero zwracała mi.

Jeszcze inaczej może wytłumacze..

$codeSplit = 'h'

$this->DataHash ma 'h' => 'dudek' a mi zamienia na wartość z DataHash 0 => 'costam'
nospor
Z opisu co podales teraz, to chcesz zamieniac wartosci z codespli a nie klucze.....z kodu w pierwszym poscie wynika, ze chcesz zamieniasz klucze z codesplik. Ty sie wez zdecyduj.....
Ciezko przemienic jak juz masz wszystko podane na tacy??

  1. $array1 = array(1, 2);
  2. $array2 = array('1' => 'bla', '2' => 'dsad','3'=>'blblbl');
  3. $wynik = array();
  4. foreach ($array1 as $k => $v){
  5.  
  6. if (isset($array2[$v])) $wynik[$v] = $array2[$v];
  7.  
  8. }

I juz. No myslec tez trzeba troszke samemu a nie tylko czekac na gotowe
Cinamicom
To jest to! Dziękuje.
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.