Autor | Zpráva | ||
---|---|---|---|
gardener Profil |
#1 · Zasláno: 26. 5. 2010, 20:50:35 · Upravil/a: gardener
Zdravím, chtěl bych se zeptat, mám jedno pole se strukturou podobnou:
[0] => Array ( [Section] => Array ( [ID] => 2 [MANDANT_NR] => 1 [USER_ID_NEW] => mail@gmail.com [USER_NR_NEW] => 13 [TS_NEW] => 2010-05-22 00:28:12 [USER_ID_CHANGE] => mail@gmail.com [USER_NR_CHANGE] => [TS_CHANGE] => 2010-05-22 00:28:12 [DELETED] => 0 [user_id] => 13 [describe] => fn [title] => Kvalita piva [company_id] => 1 ) ) [1] => Array ( [Section] => Array ( [ID] => 2 [MANDANT_NR] => 1 [USER_ID_NEW] => mail@gmail.com [USER_NR_NEW] => 13 [TS_NEW] => 2010-05-22 00:28:12 [USER_ID_CHANGE] => mail@gmail.com [USER_NR_CHANGE] => [TS_CHANGE] => 2010-05-22 00:28:12 [DELETED] => 0 [user_id] => 13 [describe] => fn [title] => Kvalita piva [company_id] => 1 ) ) ATD.. A chtěl bych do všech indexů. vložit na konec další pole ve tvaru: Array ( [0] => 3 [1] => 0 [2] => 11 [3] => 3 ) Tak by se např. index 0 přiřadil na konec indexu 0 v prvním poli. Dost možná to píši zmateně, takže nastíním, jak by vypadal výsledek: [0] => Array ( [Section] => Array ( [ID] => 2 [MANDANT_NR] => 1 [USER_ID_NEW] => mail@gmail.com [USER_NR_NEW] => 13 [TS_NEW] => 2010-05-22 00:28:12 [USER_ID_CHANGE] => mail@gmail.com [USER_NR_CHANGE] => [TS_CHANGE] => 2010-05-22 00:28:12 [DELETED] => 0 [user_id] => 13 [describe] => fn [title] => Kvalita piva [company_id] => 1 [count_of_replies] =>3 ) ) [1] => Array ( [Section] => Array ( [ID] => 2 [MANDANT_NR] => 1 [USER_ID_NEW] => mail@gmail.com [USER_NR_NEW] => 13 [TS_NEW] => 2010-05-22 00:28:12 [USER_ID_CHANGE] => mail@gmail.com [USER_NR_CHANGE] => [TS_CHANGE] => 2010-05-22 00:28:12 [DELETED] => 0 [user_id] => 13 [describe] => fn [title] => Kvalita piva [company_id] => 1 [count_of_replies] =>0 ) ) ATD.. Jde toto vůbec pomocí standartních php funkcí provést? Zkoušel jsem array push, pop a merge ale s těmi to nejde. Díky za každou radu.. |
||
Nox Profil |
#2 · Zasláno: 26. 5. 2010, 20:57:18 · Upravil/a: Nox
<?php function addSomething(&$array, $key, $keyAdd, array $values) { foreach($array as $index => $arr) if( isset($array[$index][$key]) ) $array[$index][$key][$keyAdd] = $values[$index]; } addSomething($tvuj_array, "Section", "count_of_replies", $hodnoty); ?> nebo <?php function addSomething(array $array, $key, $keyAdd, array $values) { foreach($array as $index => $arr) if( isset($arr[$key]) ) $arr[$key][$keyAdd] = $values[$index]; return $array; } $tvuj_array = addSomething($tvuj_array, "Section", "count_of_replies", $hodnoty); ?> hezčí mi přijde to druhý, ale zas...ta modifikace by způsobila kopírování pole, ne? to by asi nemuselo být úplně hezký u většího pole |
||
gardener Profil |
#3 · Zasláno: 26. 5. 2010, 21:15:39 · Upravil/a: gardener
Zkoušl jsme ten druhý postup, ale do pole Section nic nepřidá, viz:
function view($id = null) { if (!$id) { $this->Session->setFlash(__('Špatné ID firmy', true)); $this->redirect(array('action' => 'index')); } $this->set('companyInfo', $this->Company->read(null, $id)); $sectionsResult = $this->paginate('Section',array('Section.company_id' =>$id)); //debug($sectionsResult); $countOfComments = array(); foreach($sectionsResult as $value) { $countOfComments[] = sizeof($value['Discussion']); } function addSomething(array $array, $key, $keyAdd, array $values) { foreach($array as $index => $arr) if( isset($arr[$key]) ) $arr[$key][$keyAdd] = $values[$index]; return $array; } $sectionsResult = addSomething($sectionsResult, "Section", "count_of_replies", $countOfComments); debug($sectionsResult); $this->set("sectionsResult",$sectionsResult); } |
||
Nox Profil |
#4 · Zasláno: 26. 5. 2010, 21:20:18
chybka....už by to mělo jít ... return $arr; => return $array;
|
||
gardener Profil |
#5 · Zasláno: 26. 5. 2010, 21:29:49
Pořád nic, dávám debugovat jak
debug($tvuj_array); tak i debug($sectionsResult); který představuje pole, kam jsem to chtěl přidat. |
||
Nox Profil |
#6 · Zasláno: 26. 5. 2010, 21:42:28
Tak dotřetice :)
Řádek 6 na $array[$index]... |
||
gardener Profil |
#7 · Zasláno: 26. 5. 2010, 21:46:20
Ne, pořád stejné :) není chyba ve foreachi?
|
||
Nox Profil |
#8 · Zasláno: 26. 5. 2010, 21:50:34 · Upravil/a: Nox
Tam podle mě určitě ne, zkoušel jsem to takto a jede mi to:
$array = array( array("Section" => array("abc"=>1, "asd"=>2)), array("Section" => array("abc"=>3, "asd"=>4)), array("Section" => array("abc"=>5, "asd"=>6)), ); $values = array(10,15,20); function addSomething(array $array, $key, $keyAdd, array $values) { foreach($array as $index => $arr) if( isset($arr[$key]) ) $array[$index][$key][$keyAdd] = $values[$index]; return $array; } $res = addSomething($array, "Section", "count_re", $values); echo "----------\n"; var_dump( $res ); die; |
||
gardener Profil |
#9 · Zasláno: 26. 5. 2010, 21:59:26
Aha, ano funguje to, máš samozřejmě pravdu.. měl jsem zapsáno chybně:
$arr[$key][$keyAdd] = $values[$index]; Děkuji moc za radu, snad se to bude někomu ještě hodit, aspoň je z toho vidět, jak jsou občas frameworky "neohebné" |
||
gardener Profil |
#10 · Zasláno: 26. 5. 2010, 22:08:50
Jeste me napadlo, ze by to slo az ve view pomoci
count($value['Discussion']) Ale to neni tak "čisté". |
||
Časová prodleva: 14 let
|
0