developer's diary

最近はc#のエントリが多いです

array_combine関数をphp4でも使う

CakePHPのcontroller.phpを見てたらarray_combineっていう関数を使っていて、なんだこれと思い。PHPポケットリファレンスを見て探したけどない・・・
ネットで調べたら*1、PHP5にだけある関数なんですね。
でもCakePHPで使ってるということはどこかで定義してあるハズと思いgrepしてみたら。

basics.php(162): if (!function_exists('array_combine')) {
basics.php(171): function array_combine($a1, $a2) {

とでて参りました。
以下その部分のソース。。。

<?php
if (!function_exists('array_combine')) {
/**
 * Combines given identical arrays by using the first array's values as keys,
 * and the second one's values as values. (Implemented for back-compatibility with PHP4)
 *
 * @param array $a1 Array to use for keys
 * @param array $a2 Array to use for values
 * @return mixed Outputs either combined array or false.
 */
	function array_combine($a1, $a2) {
		$a1 = array_values($a1);
		$a2 = array_values($a2);
		$c1 = count($a1);
		$c2 = count($a2);

		if ($c1 != $c2) {
			return false;
		}
		if ($c1 <= 0) {
			return false;
		}
		$output = array();

		for ($i = 0; $i < $c1; $i++) {
			$output[$a1[$i]] = $a2[$i];
		}
		return $output;
	}
}
?>

他にもネットで探してたら、他にもソースが。

<?php
if (!function_exists('array_combine'))
{
    function array_combine($arr1,$arr2) {
       $out = array();
       foreach ($arr1 as $key1 => $value1) {
        $out[$value1] = $arr2[$key1];
       }
       return $out;
    }
}
?>

忘れないうちにメモ。