検索

php数组工具类

PHP二维数组去重复项函数

<?phpfunction unique_array_2d($array2D,$stkeep=false,$ndformat=true){	// 判断是否保留一级数组键 (一级数组键可以为非数字)	if($stkeep) $stArr = array_keys($array2D);	// 判断是否保留二级数组键 (所有二级数组键必须相同)	if($ndformat) $ndArr = array_keys(end($array2D));	//降维,也可以用implode,将一维数组转换为用逗号连接的字符串	foreach ($array2D as $v){		$v = join(",",$v); 		$temp[] = $v;	}	//去掉重复的字符串,也就是重复的一维数组	$temp = array_unique($temp); 	//再将拆开的数组重新组装	foreach ($temp as $k => $v)	{		if($stkeep) $k = $stArr[$k];		if($ndformat)		{			$tempArr = explode(",",$v); 			foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval;		}		else $output[$k] = explode(",",$v); 	}	return $output;}$array2D = array(	'first'=>array('title'=>'1111','date'=>'2222'),	'second'=>array('title'=>'1111','date'=>'2222'),	'third'=>array('title'=>'2222','date'=>'3333'));echo "<pre class="brush:php;toolbar:false">";print_r(unique_array_2d($array2D,true));/*** 将二维数组通过指定的 key 去重** @param array $arr 要去重的数组* @param array $by  指定key去重,该参数不指定将返回 array()* @return array*/function array_multunique($arr,$by = array()) {	$temp = array();	foreach($arr as $key => $val) {		foreach($by as $v) {			$temp[$key] .= isset($val[$v]) ? $val[$v] : '';		}	}	return array_intersect_key($arr,array_unique($temp));}/*$aa = array (      array ('id' => 123, 'name' => '张三' ),       array ('id' => 123, 'name' => '李四' ),       array ('id' => 124, 'name' => '王五' ),       array ('id' => 125, 'name' => '赵六' ),       array ('id' => 126, 'name' => '赵六' )   );  $key = 'id';  array_multunique ($aa, array('id')); */function array_remove_key($array,$keys){	if (!is_array($array) || !is_array($keys)){		return false;	}	foreach($array as $t){		foreach($keys as $k){			unset($t[$k]);		}		$doc[]=$t;	}	return $doc;}/*$array = array(	'0' => array('a' => 'aaaaa', 'b' => 'bbbbb', 'c' => array('d' => 'ddddd', 'e' => 'eeeee')),	'1' => array('a' => 'aaaaa', 'b' => 'bbbbb', 'c' => array('d' => 'ddddd', 'e' => 'eeeee')));print_r( array_remove_key($array,array('c')));*/function array_remove_key_val(&$a,$b,$c){	foreach ($a as $key=>$value){		if ( isset($value[$b]) && ($value[$b]==$c) ){			unset($a[$key]);		}	}}/*$a=array(	array('id'=>1,'num'=>10,'type'=>'news'),	array('id'=>2,'num'=>100,'type'=>'pic'));print_r( array_remove_key_val($a,"id","1") );*/

数组xml 相互转换http://hudeyong926.iteye.com/blog/836048

<?php/** * 从数组中删除空白的元素(包括只有空白字符的元素) * * @param array $arr * @param boolean $trim */function array_remove_empty(& $arr, $trim = true){    foreach ($arr as $key => $value) {        if (is_array($value)) {            array_remove_empty($arr[$key]);        } else {            $value = trim($value);            if ($value == '') {                unset($arr[$key]);            } elseif ($trim) {                $arr[$key] = $value;            }        }    }}/** * 从一个二维数组中返回指定键的所有值 * * @param array $arr * @param string $col * * @return array */function array_col_values(& $arr, $col){    $ret = array();    foreach ($arr as $row) {        if (isset($row[$col])) { $ret[] = $row[$col]; }    }    return $ret;}/** * 将一个二维数组转换为 hashmap * * 如果省略 $valueField 参数,则转换结果每一项为包含该项所有数据的数组。 * * @param array $arr * @param string $keyField * @param string $valueField * * @return array */function array_to_hashmap(& $arr, $keyField, $valueField = null){    $ret = array();    if ($valueField) {        foreach ($arr as $row) {            $ret[$row[$keyField]] = $row[$valueField];        }    } else {        foreach ($arr as $row) {            $ret[$row[$keyField]] = $row;        }    }    return $ret;}/** * 将一个二维数组按照指定字段的值分组 * * @param array $arr * @param string $keyField * * @return array */function array_group_by(& $arr, $keyField){    $ret = array();    foreach ($arr as $row) {        $key = $row[$keyField];        $ret[$key][] = $row;    }    return $ret;}/** * 将一个平面的二维数组按照指定的字段转换为树状结构 * * 当 $returnReferences 参数为 true 时,返回结果的 tree 字段为树,refs 字段则为节点引用。 * 利用返回的节点引用,可以很方便的获取包含以任意节点为根的子树。 * * @param array $arr 原始数据 * @param string $fid 节点ID字段名 * @param string $fparent 节点父ID字段名 * @param string $fchildrens 保存子节点的字段名 * @param boolean $returnReferences 是否在返回结果中包含节点引用 * * return array */function array_to_tree($arr, $fid, $fparent = 'parent_id',    $fchildrens = 'childrens', $returnReferences = false){    $pkvRefs = array();    foreach ($arr as $offset => $row) {        $pkvRefs[$row[$fid]] =& $arr[$offset];    }    $tree = array();    foreach ($arr as $offset => $row) {        $parentId = $row[$fparent];        if ($parentId) {            if (!isset($pkvRefs[$parentId])) { continue; }            $parent =& $pkvRefs[$parentId];            $parent[$fchildrens][] =& $arr[$offset];        } else {            $tree[] =& $arr[$offset];        }    }    if ($returnReferences) {        return array('tree' => $tree, 'refs' => $pkvRefs);    } else {        return $tree;    }}/** * 将树转换为平面的数组 * * @param array $node * @param string $fchildrens * * @return array */function tree_to_array(& $node, $fchildrens = 'childrens'){    $ret = array();    if (isset($node[$fchildrens]) && is_array($node[$fchildrens])) {        foreach ($node[$fchildrens] as $child) {            $ret = array_merge($ret, tree_to_array($child, $fchildrens));        }        unset($node[$fchildrens]);        $ret[] = $node;    } else {        $ret[] = $node;    }    return $ret;}/** * 根据指定的键值对数组排序 * * @param array $array 要排序的数组 * @param string $keyname 键值名称 * @param int $sortDirection 排序方向 * * @return array */function array_column_sort($array, $keyname, $sortDirection = SORT_ASC){    return array_sortby_multifields($array, array($keyname => $sortDirection));}/** * 将一个二维数组按照指定列进行排序,类似 SQL 语句中的 ORDER BY * * @param array $rowset * @param array $args */function array_sortby_multifields($rowset, $args){    $sortArray = array();    $sortRule = '';    foreach ($args as $sortField => $sortDir) {        foreach ($rowset as $offset => $row) {            $sortArray[$sortField][$offset] = $row[$sortField];        }        $sortRule .= '$sortArray[\'' . $sortField . '\'], ' . $sortDir . ', ';    }    if (empty($sortArray) || empty($sortRule)) { return $rowset; }    eval('array_multisort(' . $sortRule . '$rowset);');    return $rowset;}/*description: 交换数组中两个元素的位置,元素包括key和value,具体用法见下面的例子$arr = array (11 => 'a', 22 => 'b', 33 => 'c', 44 => 'd' );$res = array_exchange ( $arr, 11, 33 );*/function array_exchange($arr, $arg1, $arg2) {	$r = range ( 0, count ( $arr ) - 1 );	$res = $res_bak = array_combine ( $r, array_keys ( $arr ) );	$change = array ($arg1, $arg2 );	list ( $res [array_search ( $change [0], $res_bak )], $res [array_search ( $change [1], $res_bak )] ) = array ($change [1], $change [0] );	foreach ( $res as $v ) {		$array [$v] = $arr [$v];	}	return $array;} /*假设:给定一个大数组和一个字符串,要求在这个大数组中查找出比这个字符串大的5个元素。对于一个小数组(如:几十个元素以下的数组),可以采用循环的办法来一个一个进行比较,但是对于大数组来说,这个方法显然是不行,这需要找一个快速查找定位的解决办法。$search = 'arr';$array = array (	'abs',		'acos',	'acosh',	'addcslashes',	'addslashes',	'aggregate_info',	'array_diff',	'array_fill_keys',	'array_fill',	'array_filter',	'base64_encode',	'basename',	'bcadd',	'bccomp',);$arrpos = array_pos($array,$search);   //定位$arr = array_slice($array,$arrpos,5);  //取出数组print_r($arr);快速查找的结果:Array(    [0] => array_diff    [1] => array_fill_keys    [2] => array_fill    [3] => array_filter    [4] => base64_encode)*/function array_pos($array,$search){	if(empty($array)) return false;	if(!$search) return 0;	sort($array);	$array_turn = array_flip($array);	if(isset($array_turn[$search]))	{		$arrpos = $array_turn[$search];	}	else 	{		$tmp_arr = $array;		$tmp_arr[] = $search;		sort($tmp_arr);		$tmp_arr_turn = array_flip($tmp_arr);		$arrpos = $tmp_arr_turn[$search];	}	return $arrpos;}/** * 对数据进行编码转换 * @param array/string $data       数组 * @param string $input     需要转换的编码 * @param string $output    转换后的编码 */function array_iconv($data, $input = 'gbk', $output = 'utf-8') {	if (!is_array($data)) {		return iconv($input, $output, $data);	} else {		foreach ($data as $key=>$val) {			if(is_array($val)) {				$data[$key] = array_iconv($val, $input, $output);			} else {				$data[$key] = iconv($input, $output, $val);			}		}		return $data;	}}/**$str ="array (  'workflowid' => '',  'ishtml' => '0',  'content_ishtml' => '0',  'create_to_html_root' => '0',)";$setting = string2array($str);$setting:Array(    [workflowid] =>     [ishtml] => 0    [content_ishtml] => 0    [create_to_html_root] => 0)**//** * 将字符串转换为数组 * * @param	string	$data	字符串 * @return	array	返回数组格式,如果,data为空,则返回空数组 */function string2array($data) {	if($data == '') return array();	eval("\$array = $data;");	return $array;}/** * 返回经stripslashes处理过的字符串或数组 * @param $string 需要处理的字符串或数组 * @return mixed */function new_stripslashes($string) {	if(!is_array($string)) return stripslashes($string);	foreach($string as $key => $val) $string[$key] = new_stripslashes($val);	return $string;}/*** 将数组转换为字符串** @param	array	$data		数组* @param	bool	$isformdata	如果为0,则不使用new_stripslashes处理,可选参数,默认为1* @return	string	返回字符串,如果,data为空,则返回空*/function array2string($data, $isformdata = 1) {	if($data == '') return '';	if($isformdata) $data = new_stripslashes($data);	return addslashes(var_export($data, TRUE));}/*  * 数组转换成对象$array = array('name' => 'one',               'sex' => 'two',			   'test'=>array('a'=>'ss','dd'),               'old' => 'three'			  );$arrayobject = array2Object($array);echo $arrayobject->name;  // oneprint_r(object2Array($arrayobject));   */function array2Object($array){	if(!is_array($array)) return $array;	$object = new stdClass();	if(is_array($array) && count($array) > 0)	{		foreach($array as $name=>$value)		{			$name = strtolower(trim($name));			if($name) $object->$name = array2Object($value);		}		return $object;	}	else return FALSE;} /*  * 对象转换成数组  */function object2Array($objParam) {	$obj_param = ( array ) $objParam;	foreach ( $obj_param as $key => $value ) {		if (is_object ( $value )) {			object2Array ( $value );			$obj_param [$key] = ( array ) $value;		}	}	return $obj_param;}//数组开头添加元素 保持原始key不变 arrayUnshift($arr, array('test'=>'4'))function arrayUnshift($arrParams, $arrAdd) {	$arr_keys = array ();	$arr_values = array ();	$arr_add_keys = array_keys ( $arrAdd );	$arr_keys = array ($arr_add_keys [0] );	$arr_values = array ($arrAdd [$arr_add_keys [0]] );	foreach ( $arrParams as $key => $value ) {		array_push ( $arr_keys, $key );		array_push ( $arr_values, $value );	}	$arr_result = array_combine ( $arr_keys, $arr_values );	return $arr_result;} //获取多维数组下特定键下的值,并生成一维数组 function getKey2Array(array $arr, $key){	if (!trim($key)) return false;	preg_match_all("/\"$key\";\w{1}:(?:\d+:|)(.*?);/", serialize($arr), $output);	return $output[1];}//多维数组转一维数组 $arr=array('123.html','456.html',array('dw.html','fl.html',array('ps.html','fw.html')),'ab.html');function rebuild_array($arr){  //rebuild a array	static $tmp=array();	for($i=0; $i<count($arr); $i++){		if(is_array($arr[$i])){			rebuild_array($arr[$i]);		}else{			$tmp[]=$arr[$i];		}	}	return $tmp;}
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPの継続的な使用:その持久力の理由PHPの継続的な使用:その持久力の理由Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

PHPおよびPython:類似点と相違点を調査しますPHPおよびPython:類似点と相違点を調査しますApr 19, 2025 am 12:21 AM

PHPとPythonはどちらも、Web開発、データ処理、自動化タスクで広く使用されている高レベルのプログラミング言語です。 1.PHPは、ダイナミックウェブサイトとコンテンツ管理システムの構築によく使用されますが、PythonはWebフレームワークとデータサイエンスの構築に使用されることがよくあります。 2.PHPはエコーを使用してコンテンツを出力し、Pythonは印刷を使用します。 3.両方ともオブジェクト指向プログラミングをサポートしますが、構文とキーワードは異なります。 4。PHPは弱いタイプの変換をサポートしますが、Pythonはより厳しくなります。 5. PHPパフォーマンスの最適化には、Opcacheおよび非同期プログラミングの使用が含まれますが、PythonはCprofileおよび非同期プログラミングを使用します。

PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません