Вот пакетный файл, который я записал для автоматизации его из командной строки, но этого для Windows/MS-DOS.
Синтаксис является rename_mysqldb базой данных newdatabase-u [пользователь]-p [пароль]
:: ***************************************************************************
:: FILE: RENAME_MYSQLDB.BAT
:: ***************************************************************************
:: DESCRIPTION
:: This is a Windows /MS-DOS batch file that automates renaming a MySQL database
:: by using MySQLDump, MySQLAdmin, and MySQL to perform the required tasks.
:: The MySQL\bin folder needs to be in your environment path or the working directory.
::
:: WARNING: The script will delete the original database, but only if it successfully
:: created the new copy. However, read the disclaimer below before using.
::
:: DISCLAIMER
:: This script is provided without any express or implied warranties whatsoever.
:: The user must assume the risk of using the script.
::
:: You are free to use, modify, and distribute this script without exception.
:: ***************************************************************************
:INITIALIZE
@ECHO OFF
IF [%2]==[] GOTO HELP
IF [%3]==[] (SET RDB_ARGS=--user=root) ELSE (SET RDB_ARGS=%3 %4 %5 %6 %7 %8 %9)
SET RDB_OLDDB=%1
SET RDB_NEWDB=%2
SET RDB_DUMPFILE=%RDB_OLDDB%_dump.sql
GOTO START
:START
SET RDB_STEP=1
ECHO Dumping "%RDB_OLDDB%"...
mysqldump %RDB_ARGS% %RDB_OLDDB% > %RDB_DUMPFILE%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=2
ECHO Creating database "%RDB_NEWDB%"...
mysqladmin %RDB_ARGS% create %RDB_NEWDB%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=3
ECHO Loading dump into "%RDB_NEWDB%"...
mysql %RDB_ARGS% %RDB_NEWDB% < %RDB_DUMPFILE%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=4
ECHO Dropping database "%RDB_OLDDB%"...
mysqladmin %RDB_ARGS% drop %RDB_OLDDB% --force
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=5
ECHO Deleting dump...
DEL %RDB_DUMPFILE%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
ECHO Renamed database "%RDB_OLDDB%" to "%RDB_NEWDB%".
GOTO END
:ERROR_ABORT
IF %RDB_STEP% GEQ 3 mysqladmin %RDB_ARGS% drop %NEWDB% --force
IF %RDB_STEP% GEQ 1 IF EXIST %RDB_DUMPFILE% DEL %RDB_DUMPFILE%
ECHO Unable to rename database "%RDB_OLDDB%" to "%RDB_NEWDB%".
GOTO END
:HELP
ECHO Renames a MySQL database.
ECHO Usage: %0 database new_database [OPTIONS]
ECHO Options: Any valid options shared by MySQL, MySQLAdmin and MySQLDump.
ECHO --user=root is used if no options are specified.
GOTO END
:END
SET RDB_OLDDB=
SET RDB_NEWDB=
SET RDB_ARGS=
SET RDB_DUMP=
SET RDB_STEP=
Вы можете использовать array_count_values , функция
$array = array('apple', 'orange', 'pear', 'banana', 'apple',
'pear', 'kiwi', 'kiwi', 'kiwi');
print_r(array_count_values($array));
выведет
Array
(
[apple] => 2
[orange] => 1
[pear] => 2
etc...
)
Вы можете попробовать превратить этот массив в ассоциативный массив с фруктами в качестве ключей и количеством вхождений в качестве значений. Немного многословно, но похоже:
$array = array('apple', 'orange', 'pear', 'banana', 'apple',
'pear', 'kiwi', 'kiwi', 'kiwi');
$new_array = array();
foreach ($array as $key => $value) {
if(isset($new_array[$value]))
$new_array[$value] += 1;
else
$new_array[$value] = 1;
}
foreach ($new_array as $fruit => $n) {
echo $fruit;
if($n > 1)
echo "($n)";
echo "<br />";
}
Вставить их в карту
(псевдокод)
map[string -> int] $m
foreach($word in $array)
{
if(!$m.contains($word))
$m[$word] = 0;
$m[$word] += 1;
}
Может быть, что-то вроде этого (непроверенный код, но должен дать вам представление)?
$new = array();
foreach ($array as $value)
{
if (isset($new[$value]))
$new[$value]++;
else
$new[$value] = 1;
}
Тогда вы получите новый массив со значениями в качестве ключей, и их значением будет количество раз, когда они существовал в исходном массиве.
Чтобы избавиться, используйте array_unique ()
. Чтобы определить, нужно ли использовать count (array_unique ())
и сравнить с count ($ array)
.
function array_not_unique( $a = array() )
{
return array_diff_key( $a , array_unique( $a ) );
}
if(count(array_unique($array))<count($array))
{
// Array has duplicates
}
else
{
// Array does not have duplicates
}