Join the Stack Overflow Community
Stack Overflow is a community of 6.4 million programmers, just like you, helping each other.
Join them; it only takes a minute:
Sign up

I have to push an associative array in a normal array (not to convert).
Example (NO CODE):

project = {}
element["title"] = "My title"
element["description"] = "My description"

is there a way to have this

echo $project->title;
//or
echo $project[0]["title"]

? I'v tried this, but server says: ERROR 500

    $i = 0;
    $projects = {};
    foreach($projectsElements as $element) {
        while($i <= $nRowsForProject) {
            $idSection = $element->idSection;
            if($idSection == 1) $elements["".$element->internalDescription.""] = $element->text;
            else if($idSection == 2) $elements["".$element->internalDescription.""] = $element->text;
            else if($idSection == 3) $elements["".$element->internalDescription.""] = $element->text;
            $i++;
        }
        array_push($projects,$elements);
        $i=0;
    }
share|improve this question
    
$projects []= $element;? – Ruslan Osmanov Oct 12 at 11:59
1  
You confuse things: an object is something different than an array. The -> operator references a property inside an object, but that is not possible in a declarative manner. Also creating an object is not possible by a simple $projects = {}; as you attempt to, that is a syntax error (your error 500). Instead you typically have to implement a class of which you then can instantiate an object. – arkascha Oct 12 at 12:01
up vote 4 down vote accepted

$projects = {}; is not valid php.

If you want to initialize an empty array (associative or numeric, that does not matter), you need:

$projects = [];

or on older php versions:

$projects = array();

Also note that you need to do the same to your $elements array at the beginning of each iteration otherwise it will grow on every iteration. Assuming that the descriptions are not all the same...

foreach($projectsElements as $element) {
    $elements = [];
    while($i <= $nRowsForProject) {
        ...

And your while loop does not seem to make a lot of sense: You are not using the $i variable in your loop so are just doing the same assignments on each iteration.

share|improve this answer
    
with [] works... I'm dumb, thank you! – ProtoTyPus Oct 12 at 12:40
$projects = []; // declare empty array
foreach($projectsElements as $element) {
  $projects []= $element; // push $element into $projects array
}
share|improve this answer
$i = 0;
$projects = array();
foreach($projectsElements as $element) {
    while($i <= $nRowsForProject) {
    $elements = array();
        $idSection = $element->idSection;
        if($idSection == 1) $elements["".$element->internalDescription.""] = $element->text;
        else if($idSection == 2) $elements["".$element->internalDescription.""] = $element->text;
        else if($idSection == 3) $elements["".$element->internalDescription.""] = $element->text;
        $i++;
    }
    array_push($projects,$elements);
    $i=0;
}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.