|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2012-05-23 05:29 UTC] patttern at gmail dot com
Description:
------------
While executing method array_diff_assoc error appears "Notice: Array to string
conversion".
The output of script:
array(2) { ["one"]=> array(2) { ["param1"]=> string(23) "First Parameter for
One" ["param2"]=> string(24) "Second Parameter for One" } ["two"]=> array(2) {
["param1"]=> string(23) "First Parameter for Two" ["param2"]=> string(24)
"Second Parameter for Two" } }
string(3) "two"
array(2) { ["param1"]=> string(23) "First Parameter for Two" ["param2"]=>
string(24) "Second Parameter for Two" }
array(1) { ["two"]=> array(2) { ["param1"]=> string(23) "First Parameter for
Two" ["param2"]=> string(24) "Second Parameter for Two" } }
Notice: Array to string conversion in /usr/web/data/test_array_diff.php on line
14 Notice: Array to string conversion in /usr/web/data/test_array_diff.php on
line 14 array(1) { ["one"]=> array(2) { ["param1"]=> string(23) "First Parameter
for One" ["param2"]=> string(24) "Second Parameter for One" } }
What is wrong?
Test script:
---------------
<?php
$source_packages = array(
'one' => array ('param1' => 'First Parameter for One', 'param2' => 'Second Parameter for One'),
'two' => array ('param1' => 'First Parameter for Two', 'param2' => 'Second Parameter for Two')
);
$packages_from = $source_packages;
var_dump($packages_from); echo "<br />\n";
$package_key = 'two';
var_dump($package_key); echo "<br />\n";
$package_value = $source_packages[$package_key];
var_dump($package_value); echo "<br />\n";
$packages_to = array($package_key => $package_value);
var_dump($packages_to); echo "<br />\n";
$result_packages = array_diff_assoc($packages_from, $packages_to);
var_dump($result_packages); echo "<br />\n";
?>
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Oct 26 22:00:01 2025 UTC |
Thank you for your answers! For a test I run this script on different versions of PHP <?php echo "PHP version: ".phpversion()."<br />\n"; $source_packages = array( 'one' => array ('param1' => 'First Parameter for One', 'param2' => 'Second Parameter for One'), 'two' => array ('param1' => 'First Parameter for Two', 'param2' => 'Second Parameter for Two') ); $packages_from = $source_packages; var_dump($packages_from); echo "<br />\n"; $package_key = 'two'; $package_value = $source_packages[$package_key]; $packages_to = array($package_key => $package_value); var_dump($packages_to); echo "<br />\n"; $result_packages = array_diff_assoc($packages_from, $packages_to); var_dump($result_packages); echo "<br />\n"; ?> =================== PHP version: 5.3.10 array(2) { ["one"]=> array(2) { ["param1"]=> string(23) "First Parameter for One" ["param2"]=> string(24) "Second Parameter for One" } ["two"]=> array(2) { ["param1"]=> string(23) "First Parameter for Two" ["param2"]=> string(24) "Second Parameter for Two" } } array(1) { ["two"]=> array(2) { ["param1"]=> string(23) "First Parameter for Two" ["param2"]=> string(24) "Second Parameter for Two" } } array(1) { ["one"]=> array(2) { ["param1"]=> string(23) "First Parameter for One" ["param2"]=> string(24) "Second Parameter for One" } } =================== PHP version: 5.4.3 array(2) { ["one"]=> array(2) { ["param1"]=> string(23) "First Parameter for One" ["param2"]=> string(24) "Second Parameter for One" } ["two"]=> array(2) { ["param1"]=> string(23) "First Parameter for Two" ["param2"]=> string(24) "Second Parameter for Two" } } array(1) { ["two"]=> array(2) { ["param1"]=> string(23) "First Parameter for Two" ["param2"]=> string(24) "Second Parameter for Two" } } Notice: Array to string conversion in /usr/web/data/test_array_diff.php on line 13 Notice: Array to string conversion in /usr/web/data/test_array_diff.php on line 13 array(1) { ["one"]=> array(2) { ["param1"]=> string(23) "First Parameter for One" ["param2"]=> string(24) "Second Parameter for One" } } =================== Since 5.4+ version the work of array_diff* method changed. How I should rewrite this code to avoid errors? At the moment error log of a average visited site is increasing on 50+Mb every day because of this notice.