Asked  2 Years ago    Answers:  5   Viewed   85 times

I have array 1:

Array
(
    [0] => Array
        (
            [recomendation_id] => 3588
            [employee_id] => 90141063
            [attendance_type_id] => 2
            [start_dtm] => 2016-05-17 10:32:00
            [end_dtm] => 
            [request_message] => test notif
            [recomendation_status_id] => 1
            [last_update_dtm] => 2016-05-17 10:32:43
            [employee_name] => Nike Yulistia Angreni
            [attd_type_name] => Permittance
            [status_name] => Request
        )

)

And array 2:

Array
(
    [0] => Array
        (
            [valuator1] => Wulan  Lastia Permana
        )
)

I want to make array values in one array. I want result like this:

Array
(
    [0] => Array
        (
            [recomendation_id] => 3588
            [employee_id] => 90141063
            [attendance_type_id] => 2
            [start_dtm] => 2016-05-17 10:32:00
            [end_dtm] => 
            [request_message] => test notif
            [recomendation_status_id] => 1
            [last_update_dtm] => 2016-05-17 10:32:43
            [employee_name] => Nike Yulistia Angreni
            [attd_type_name] => Permittance
            [status_name] => Request
            [valuator1] => Wulan  Lastia Permana
        )
)

Is it possible to join like that?

 Answers

1

You have to use array_replace_recursive:

<?php

$arr1 = Array
(
     Array
        (
            "recomendation_id" => 3588,
            "employee_id" => 90141063,
            "attendance_type_id" => 2,
            "start_dtm" => "2016-05-17 10:32:00",
            "end_dtm" => "",
            "request_message" => "test notif",
            "recomendation_status_id" => 1,
            "last_update_dtm" => "2016-05-17 10:32:43",
            "employee_name" => "Nike Yulistia Angreni",
            "attd_type_name" => "Permittance",
            "status_name" => "Request"
        )

);
$arr2 = Array
(
    Array
        (
            "valuator1" => "Wulan  Lastia Permana"
        )
);

print_r(array_replace_recursive($arr1,$arr2));

Result:

Array
(
    [0] => Array
        (
            [recomendation_id] => 3588
            [employee_id] => 90141063
            [attendance_type_id] => 2
            [start_dtm] => 2016-05-17 10:32:00
            [end_dtm] => 
            [request_message] => test notif
            [recomendation_status_id] => 1
            [last_update_dtm] => 2016-05-17 10:32:43
            [employee_name] => Nike Yulistia Angreni
            [attd_type_name] => Permittance
            [status_name] => Request
            [valuator1] => Wulan  Lastia Permana
        )

)

Your Eval


If you use array_merge_recursive, your output will be:

Array
(
    [0] => Array
        (
            [recomendation_id] => 3588
            [employee_id] => 90141063
            [attendance_type_id] => 2
            [start_dtm] => 2016-05-17 10:32:00
            [end_dtm] => 
            [request_message] => test notif
            [recomendation_status_id] => 1
            [last_update_dtm] => 2016-05-17 10:32:43
            [employee_name] => Nike Yulistia Angreni
            [attd_type_name] => Permittance
            [status_name] => Request
        )

    [1] => Array
        (
            [valuator1] => Wulan  Lastia Permana
        )

)
Tuesday, October 18, 2022
 
2

This is just a demo. Then, you can bind $product_name into your insert query.

<?php
if(isset($_REQUEST['save'])) {
    $product_name = implode(",", $_REQUEST["product"]);
    print $product_name;

}
$query="insert into product (product_name) values('".$product_name."')";
$sql=mysql_query($query);
if($sql)
    echo "success";
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form name="myform" method="post">
    <input type="text" name="product[]" value="rose">
    <input type="text" name="product[]" value="garlands">
    <input type="text" name="product[]" value="marigold">
    <input type="text" name="product[]" value="jasmine">
    <input type="text" name="product[]" value="jasmine garlands">
    <input type="submit" name="save" value="Save">
</form>

</body>
</html>
Sunday, October 2, 2022
 
ejunker
 
5

When you set cell values individually, you have the option of setting the datatype explicitly, but when you use the fromArray() method, you don't have this option.

However, by default, PHP uses a default value binder to identify datatypes from the values passed, and set the cell datatype accordingly. This default behaviour is defined in a class /PHPExcel/Cell/DefaultValueBinder.php.

So you can create your own value binder, as described in the PHPExcel Documentation, that would set every value as a string datatype.

Something like:

class PHPExcel_Cell_MyColumnValueBinder extends PHPExcel_Cell_DefaultValueBinder implements PHPExcel_Cell_IValueBinder
{
    protected $stringColumns = [];

    public function __construct(array $stringColumnList = []) {
        // Accept a list of columns that will always be set as strings
        $this->stringColumns = $stringColumnList;
    }

    public function bindValue(PHPExcel_Cell $cell, $value = null)
    {
        // If the cell is one of our columns to set as a string...
        if (in_array($cell->getColumn(), $this->stringColumns)) {
            // ... then we cast it to a string and explicitly set it as a string
            $cell->setValueExplicit((string) $value, PHPExcel_Cell_DataType::TYPE_STRING);
            return true;
        }
        // Otherwise, use the default behaviour
        return parent::bindValue($cell, $value);
    }
}

// Instantiate our custom binder, with a list of columns, and tell PHPExcel to use it
PHPExcel_Cell::setValueBinder(new PHPExcel_Cell_MyColumnValueBinder(['A', 'B', 'C', 'E', 'F']));

$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->fromArray($dataArray,null,"A2");
Wednesday, August 17, 2022
 
4

The problem is that you are doing fopen inside the for loop, so every time the loop runs, your file gets re-written. Move the fopen and fclose outside of the loop and it will work. Like this;

$fp = fopen("file.csv", "w");
for ($c=0; $c < $num; $c++)
{
     $query = "select prod_sku,prod_name from tbl_product where prod_sku = '".$data[$c]."'";
     $result = mysql_query($query);
     $row = mysql_fetch_array($result);

     fputcsv($fp, $data);
} 
fclose($fp);
Saturday, August 27, 2022
 
2

There's a lot been written about PHPExcel and memory use, and I'm not going to repeat it all here.

Try reading some of the threads on the PHPExcel discussion board discussing the issue, such as this one; or previous answers here on SO such as this one or this one

Wednesday, October 19, 2022
 
inutan
 
Only authorized users can answer the search term. Please sign in first, or register a free account.
Not the answer you're looking for? Browse other questions tagged :
 

Browse Other Code Languages