Autor Zpráva
gardener
Profil
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
<?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
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
chybka....už by to mělo jít ... return $arr; => return $array;
gardener
Profil
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
Tak dotřetice :)

Řádek 6 na $array[$index]...
gardener
Profil
Ne, pořád stejné :) není chyba ve foreachi?
Nox
Profil
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
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
Jeste me napadlo, ze by to slo az ve view pomoci
 count($value['Discussion'])


Ale to neni tak "čisté".

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0