You are here: Re: Efficiency question: Overwrite array value, or ask if it is set? « All PHP « IT news, forums, messages
Re: Efficiency question: Overwrite array value, or ask if it is set?

Posted by Markus Ernst on 07/07/06 10:13

Markus Ernst schrieb:
> While looping through an array I extract all keys on the fly, as in this
> example:
>
> $data = array(
> array('name' => 'Helen', 'age' => '40'),
> array('name' => 'Mark', 'email' => 'mark@xyz.com', 'age' => '90'),
> );
> $keys = array();
> foreach ($data as $row) {
> foreach ($row as $key => $value) {
> // do other things here
> $keys[$key] = 1;
> }
> }
> $column_names = array_keys($keys);
>
> Now my question is about the line
> $keys[$key] = 1;
>
> This overwrites existing entries and thus creates a set of unique keys.
> This could also be done without overwriting:
> if (!isset($keys[$key])) $keys[$key] = 1;
>
> So I wonder which is more efficient - overwriting the array entry at
> every loop, or checking for it with the if statement.

Thank you all for your inputs! I finally tested the versions suggested
with my real data.
Version 1: $keys[$key] = $key;
Version 2: if (!isset($keys[$key])) $keys[$key] = $key;
Version 3: if (!in_array($key, $keys)) $keys[] = $key;

Though it was only a few lines, all versions in the same script, the
rankings differed from call to call; maybe I could say that version 1
tends to be fastest when total execution is fast, and version 3 tends to
win when total execution is slower.

Anyway the range was between 0.05 and 0.1 second, which was not really
the reason for my total execution time of 25-35 seconds! (Going on
measuring and optimizing other parts of the code, I reduced it to 3-5
seconds now!)

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация