Potrzebuje przejsc tablice rekursywnie i pobrac wartosci na podstawie podanych kluczy.

Przykładowa tablica

  1. [0]=>
  2. object(stdClass)#11 (16) {
  3. ["item"]=>
  4. int(4962659860)
  5. ["user"]=>
  6. int(15049957)
  7. ["loc"]=>
  8. string(13) "Zielona góra"
  9. ["startts"]=>
  10. int(1420243200)
  11. ["endts"]=>
  12. int(1422991944)
  13. ["qty"]=>
  14. int(32)
  15. ["cat"]=>
  16. int(110497)
  17. ["tcat"]=>
  18. int(167159)
  19. ["title"]=>
  20. string(50) "ASDASDASDASDASAS"
  21. ["curr"]=>
  22. string(3) "zł"
  23. ["price"]=>
  24. int(1039)
  25. ["len"]=>
  26. int(5853)
  27. ["detSt"]=>
  28. int(5235056873762)
  29. ["detLen"]=>
  30. int(2439)
  31. ["start"]=>
  32. int(93772023807)
  33. ["t"]=>
  34. array(32) {
  35. [0]=>
  36. object(stdClass)#12 (5) {
  37. ["ts"]=>
  38. int(1422991944)
  39. ["qty"]=>
  40. int(1)
  41. ["price"]=>
  42. int(1039)
  43. ["c"]=>
  44. object(stdClass)#13 (4) {
  45. ["id"]=>
  46. int(9200363)
  47. ["ts"]=>
  48. int(1427189100)
  49. ["text"]=>
  50. string(43) "ASDASDASDASDASDASDSA"
  51. ["type"]=>
  52. int(1)
  53. }
  54. ["buyer"]=>
  55. int(3484942)
  56. }
  57. [1]=>
  58. object(stdClass)#14 (5) {
  59. ["ts"]=>
  60. int(1422991944)
  61. ["qty"]=>
  62. int(1)
  63. ["price"]=>
  64. int(1039)
  65. ["c"]=>
  66. object(stdClass)#15 (4) {
  67. ["id"]=>
  68. int(9201391)
  69. ["ts"]=>
  70. int(1427016180)
  71. ["text"]=>
  72. string(43) "ASDASDASDASDAS"
  73. ["type"]=>
  74. int(1)
  75. }
  76. ["buyer"]=>
  77. int(2390237)
  78. }
  79. [2]=>
  80. object(stdClass)#16 (5) {
  81. ["ts"]=>
  82. int(1422991944)
  83. ["qty"]=>
  84. int(1)
  85. ["price"]=>
  86. int(1039)
  87. ["c"]=>
  88. object(stdClass)#17 (4) {
  89. ["id"]=>
  90. int(9209687)
  91. ["ts"]=>
  92. int(1425579240)
  93. ["text"]=>
  94. string(43) "ASDSADASDASDASDASDAS"
  95. ["type"]=>
  96. int(1)
  97. }
  98. ["buyer"]=>
  99. int(2635831)
  100. }


Podane klucze:

  1. array(2) {
  2. [0]=>
  3. string(5) "price"
  4. [1]=>
  5. string(5) "buyer"
  6. }


I teraz mam takie cos:

  1.  
  2. public function recursiveFind(array $array, $needle) {
  3. $iterator = new \RecursiveArrayIterator($array);
  4. $recursive = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::SELF_FIRST);
  5. $aHitList = array();
  6.  
  7. foreach ($recursive as $key => $value) {
  8. if (key_exists($needle, $value)) {
  9. $row->$needle = $value->$needle;
  10. array_push($aHitList, $row);
  11. }
  12. }
  13.  
  14. return $aHitList;
  15. }
  16.  


Co działa poprawnie (ale dla jednego klucza).

  1. [0]=>
  2. object(stdClass)#654 (1) {
  3. ["text"]=>
  4. string(43) "ASDASDASDASDASDASDSA"
  5. }


Dla wielu zwraca tak ze jest pierw lista z pierwszymi kluczami a potem kolejno. A potrzebuje zrobic tak aby otrzymac:

  1. [0]=>
  2. object(stdClass)#654 (1) {
  3. ["text"]=>
  4. string(43) "ASDASDASDASDASDASDSA",
  5. ["buyer"]=>
  6. string(43) 3484942
  7. }
  8. [1]=>
  9. object(stdClass)#654 (1) {
  10. ["text"]=>
  11. string(43) "ASDASDASDASDASDASDSA"
  12. ["buyer"]=>
  13. string(43) 2390237
  14. }


Jakies pomysly jak poprawic ten skrypt abym otrzymał takie dane?