Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sprawdzanie array
Forum PHP.pl > Forum > Przedszkole
Szymciosek
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.
ber32
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. }
Szymciosek
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.
ber32
Czego więcej prześlesz
Szymciosek
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.
ber32
No to patrz post do góry
Szymciosek
W sumie w połączeniu z tym co zrobiłem do teraz, to chyba jakieś rozwiązanie.

Zaraz napiszę.
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.