Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Podmiana arraów
Cinamicom
post 27.02.2014, 16:53:28
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

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


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. }


Ten post edytował Cinamicom 27.02.2014, 17:20:36
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
nospor
post 28.02.2014, 09:00:35
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A wystarczylo zajrzec do manuala....
http://pl1.php.net/manual/en/function.array-combine.php


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Cinamicom
post 28.02.2014, 19:06:03
Post #3





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

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


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'

Ten post edytował Cinamicom 28.02.2014, 19:10:33
Go to the top of the page
+Quote Post
nospor
post 28.02.2014, 19:08:52
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No i to wlasnie robi array_combine()


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Cinamicom
post 28.02.2014, 19:13:09
Post #5





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

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


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. )


Ten post edytował Cinamicom 28.02.2014, 19:16:07
Go to the top of the page
+Quote Post
nospor
post 28.02.2014, 20:30:17
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No przeciez masz wyraznie napisane: obie tabele muszą miec taka sama liczbe elementow.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Cinamicom
post 28.02.2014, 21:06:28
Post #7





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

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


Wiem, ale ta liczba elementów jest zależna od ilości wpisanych znaków.
Go to the top of the page
+Quote Post
com
post 28.02.2014, 21:23:12
Post #8





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


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
Go to the top of the page
+Quote Post
Pyton_000
post 28.02.2014, 21:52:38
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


to już szybciej array_intersect_key i wtedy combine
Go to the top of the page
+Quote Post
com
post 28.02.2014, 22:07:48
Post #10





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


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

Ten post edytował com 28.02.2014, 22:08:13
Go to the top of the page
+Quote Post
nospor
post 28.02.2014, 22:53:01
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Cinamicom
post 1.03.2014, 07:56:30
Post #12





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

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


  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 ',"

Ten post edytował Cinamicom 1.03.2014, 20:22:22
Go to the top of the page
+Quote Post
nospor
post 2.03.2014, 12:46:58
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




NIe bardzo rozumiem co teraz napisales..... jakis problem?


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Cinamicom
post 2.03.2014, 12:56:07
Post #14





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

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


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'

Ten post edytował Cinamicom 2.03.2014, 12:57:17
Go to the top of the page
+Quote Post
nospor
post 2.03.2014, 13:02:03
Post #15





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Cinamicom
post 2.03.2014, 13:41:28
Post #16





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

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


To jest to! Dziękuje.
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: 14.08.2025 - 09:11