Frank
Frank

Reputation: 155

array to string php

Hy every one I have this problem with an array I start like this...

$name =  array($_POST['names']);
$nameId = array();
$query = mysql_query("SELECT id FROM types WHERE find_in_set (name, '$name')");
while($row = mysql_fetch_assoc($query)){
        $nameId[] = array('ids' => $row['id'] );

    }

which gives me arrays like this..

$name:

array('0'=>'name1,name2,name3')

$names:

array('0'=>array('ids'=>'61'), '1'=>array('ids'=>'6'), '2'=>array('ids'=>'1'))

how can I bring this in an string/form like this..

array('0'=>'61,6,1')

The idea is to save the ids to the Database.

Or is the a better more efficent way to get names from a form compare them with a database and get the ids back to save them to the Database?

many thanks in advance.

Upvotes: 1

Views: 80

Answers (6)

fstab
fstab

Reputation: 5029

$ids = array();
foreach($nameId as $curr) {
  $ids[] = $curr['ids'];
}
$str = "(".implode(",",$ids).")";

Upvotes: 0

Dipesh Parmar
Dipesh Parmar

Reputation: 27364

Use following function that will loop through array and find ids key and merge it into other array and after that when you calling this function it will impload it.

function CustomFindJoinArray( $needly, $array )
{
    $results = array();
    foreach ( $array as $key => $value )
    {
        if ( is_array( $value ) )
        {
            $results = array_merge($results, foo( $needly, $value ));
        }
        else if ( $key == $needly )
        {
            $results[] = $value;
        }
    }
    return $results;
}
echo implode( ",", CustomFindJoinArray( "ids", $your_array ) );

where $your_array will be array('0'=>array('ids'=>'61'), '1'=>array('ids'=>'6'), '2'=>array('ids'=>'1'))

OR More simple

foreach ($your_array as $key => $ids) {
    $newArray[] = $array[$key]["ids"];
}

$string = implode(',', $newArray);

Upvotes: 0

alwaysLearn
alwaysLearn

Reputation: 6950

Thats what I think

$nameId[] = $row['id'];
$stringId = implode(',',$name);

Upvotes: 0

Prasanth Bendra
Prasanth Bendra

Reputation: 32730

Try this :

$array  = array(0=>array(0=>'61'),1=>array(0=>'6'),2=>array(0=>'1'));
$result = implode(",",call_user_func_array('array_merge', $array));

Please note : Here all are numeric keys, so change your code to :

$nameId[] = array($row['id'] ); , remove key 'ids' from here

Output :

61,6,1

Upvotes: 0

Samy
Samy

Reputation: 632

$name =  array(name1,name2,name3);
$nameId = array();
$query = mysql_query("SELECT id FROM types WHERE find_in_set (name, '$name')");
while($row = mysql_fetch_assoc($query)){
//below line changed
    $nameId[] =  $row['id'] ;

}
 $string = implode(',',$nameId);

Upvotes: 2

anubhava
anubhava

Reputation: 784998

Change your assignment to this:

$nameId[] = $row['id'];

Upvotes: 3

Related Questions