Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sprawdzanie array
Szymciosek
post
Post #1





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Witam,
może temat nie do końca przedstawia to co chcę osiągnąć, ale do rzeczy.

Mam dwie tablice:
  1. $existingCols = array
  2. (
  3. 'id' => false,
  4. 'content' => false
  5. );
  6.  
  7. $colsArray = array
  8. (
  9. 'id' => 'nowe id',
  10. 'content' => 'nowy content'
  11. );


Pierwsza "existingCols" reprezentuje jakie kolumny istnieją w bazie danych, w tym przypadku ID i CONTENT, należąca do każdego klucza wartość boolean określa czy dana kolumna może przyjmować wartość null czy nie. W przypadku false nie może.

Druga "colsArray" reprezentuje te dane, które chcę dodać do bazy, ale musi współpracować z "existingCols" czyli:
Ta opcja, która jest teraz na górze jest ok, ale muszę sprawdzać czy tak jest (nie wiem jakie dane dostaje)...

Więc wyobrażam to sobie w ten sposób:
1) Dostaję konkretne dane w postaci JSON (przekształcam na array), odczytuje z niego klucze i wartości. ($colsArray)
- do tej pory jest ok
2) Teraz te dane, które otrzymałem muszę porównać z $existingCols czy wszystko się zgadza, czy wysłane klucze zgadzają się ze wzorem i czy te klucze mogą być pominięte.
np. mogę wysłać:
-- id = 2
ale już nie muszę wysyłać content, jeśli ten ma ustawione true.

w powyższym przypadku muszę wysłać id i content żeby wszystko było spełnione.
- i tutaj zaczyna się problem

myślałem o zrobieniu czegoś na wzór:
  1. foreach ($existingCols as $key => $value)
  2. {
  3. foreach ($colsArray as $key2 => $value2)
  4. {
  5. // tutaj porównanie za pomocą in_array, ale nie przeszło to... pewnie dlatego, że w końcu klucze mu się mieszały itd
  6. }
  7. }


drugą opcją było użycie array_search i array_keys, ale nie miałem i nadal nie mam wizji na to...

Mam nadzieję, że ktoś rozumie moją wypowiedź w tym temacie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
ber32
post
Post #2





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

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


Może tak jak dobrze zrozumiałem

  1.  
  2. $existingCols = array
  3. (
  4. 'id' => false,
  5. 'content' => false
  6. );
  7.  
  8. $colsArray = array
  9. (
  10. 'id' => 'nowe id',
  11. 'content' => 'nowy content'
  12. );
  13.  
  14. foreach ($existingCols as $key => $value)
  15. {
  16. if($value == false)
  17. {
  18. echo $key." ".$value;
  19. //// może od razu zapis do bazy zamiast następnego foreach
  20. foreach ($colsArray as $value2)
  21. {
  22. // tutaj porównanie za pomocą in_array, ale nie przeszło to... pewnie dlatego, że w końcu klucze mu się mieszały itd
  23. }
  24. }
  25. }


--------------------
Go to the top of the page
+Quote Post
Szymciosek
post
Post #3





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Prawie ale nie do końca, bo jeśli prześlę więcej niż potrzebuję muszę zwrócić informację o tym i zatrzymać działanie skryptu.

  1. $existingCols = array
  2. (
  3. 'id' => false,
  4. 'content' => false
  5. );
  6.  
  7. $colsArray = array
  8. (
  9. 'id' => 'nowe id',
  10. 'content' => 'nowy content',
  11. 'new' => 'cos new'
  12. );
  13.  
  14.  
  15. foreach ($colsArray as $key => $value)
  16. {
  17. if (array_key_exists($key, $existingCols))
  18. {
  19. echo $key . '<br />';
  20. }
  21. else
  22. {
  23. die ('probujesz podac za duzo kluczy');
  24. }
  25. }


Na razie mam coś takiego, ale jeszcze muszę sprawdzać czy muszę przesłać coś czy może być null.

Ten post edytował Szymciosek 11.03.2013, 19:06:28
Go to the top of the page
+Quote Post
ber32
post
Post #4





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

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


Czego więcej prześlesz


--------------------
Go to the top of the page
+Quote Post
Szymciosek
post
Post #5





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


W przypadku, gdy w existingCols istnieją tylko 2 kolumny: id i content, nie mogę przesłać kolumny NEW z jakąś wartością -> wtedy musi zostać zwrócony error.
Go to the top of the page
+Quote Post
ber32
post
Post #6





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

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


No to patrz post do góry


--------------------
Go to the top of the page
+Quote Post
Szymciosek
post
Post #7





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


W sumie w połączeniu z tym co zrobiłem do teraz, to chyba jakieś rozwiązanie.

Zaraz napiszę.
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 Aktualny czas: 22.08.2025 - 08:13